c語言中的for語句和ni語句,C語言中的for語句和n i 語句

2021-03-29 13:01:31 字數 6315 閱讀 7423

1樓:匿名使用者

n++這種形式是字尾自增1運算,表示先使用n值,然後n=n+1自增1

++i這種形式是字首自增1運算,表示先對i進行i=i+1自增1,然後再使用i值

如果是單獨執行這樣的語句,兩者沒有區別,如:

for( i=0; i<輸出0-9

與for( n=0; n<輸出0-9

這兩者都會迴圈10次,沒有差別。而下面的語句:

for( i=0; ++i<輸出1-9

與for( n=0; n++<輸出1-10

這兩者是有區別的:

++i<10這種,先改變i值,然後判斷,所以,迴圈9次

n++<10這種,先判斷,然後改變n值,所以,迴圈10次

2樓:匿名使用者

for語句的格式為for( ; ; ),其中for( 1 ; 2 ; 3)中位置1常常是變數的初始化,位置2是條件判斷,位置3是變數的改變,例如:for(int i=0;i < 10 ; i++){},其中花括號中就是for 語句的主體語句。對於n++,++i,這是c語言中的操作符運算,就拿n++;來說,該語句先提取出n的值然後n自增,而++i卻相反,該語句表示對i自增。

例如:n = 1;i = 1;

a = n++;b = ++i;那麼此時a = 1,而n變成2;b=2,i也是2。

3樓:鷹弈

如有疑問,hi我

你的問題有點混亂,第一個函式裡面的迴圈執行完後n的值為21,後面看不懂了

我猜你是為了區別++i和i++是吧?

簡單的回答一下吧

沒錯,值是一樣!但編譯器處理過程不一樣

不過你試試這個

#include

void main(void)

原因很簡單,就是前置++和後置++的區別,應該懂了吧。

4樓:匿名使用者

對於問題1

我們只討論迴圈:

開始 for (i=0; i<2; i++)

i=0 往下執行 for(j=0; j<2; j++)

j=0往下執行 for(k=0; k<2; k++)

k=0 往下執行 printf(「%d %d %d\n", i, j, k);

輸出 i j k 顯然輸出的是 0 0 0

輸出後執行 k++, k值變為1 與2比較 顯然 k<2 繼續執行 輸出

此時 i=0 j=0 k=1 輸出為 0 0 1

輸出後執行 k++, k值變為2 與2比較 顯然 2<2 為假,跳出k迴圈回到上一級迴圈執行 j++

j=1與2比較 顯然1<2 往下執行(此時i=0 , j=1)再次執行k迴圈int k=0

將k值重新賦值為0 執行輸出 此時 i=0 j=1 k=0 輸出 0 1 0

執行輸出後k++,k值為1與2比較 顯然1<2 繼續 k的迴圈 此時k=2,j=1 i=0

執行輸出為 0 1 1

輸出後k++ ,k值為2與2比較 2<2為假跳出k迴圈 返回j迴圈 返回時k=2,j=1 i=0 執行j++ ,j的值為 2顯然 2<2為假 ,跳出j迴圈 返回i迴圈 此時k=2,j=2 i=0, 執行i++,i值為1 與2比較 顯然1<2 往下執行

i=1,執行 j 迴圈 int j=0 j值變為0

j=0 向下執行 k迴圈 int jk=0 k值變為0

k=0 向下執行輸出 此時 i=1 j=0 k=0 輸出 1 0 0

(此時回到了i=0的開始情況 )

參照前面的分析繼續執行 依次會 輸出 1 0 1

1 1 0

1 1 1

當輸出到 1 1 1 的 時候繼續想下執行k++,k值變為2 與2比較 結果為假回到j迴圈此時 i=1,j=1 ,k=2 ;執行j 迴圈中的j++,j值為2與2比較 結果為假回到i迴圈此時 i=1,j=2 ,k=2 ;執行i 迴圈中的i++,i值為2與2比較 結果為假退出迴圈 此時i=2,j=2 ,k=2;退出迴圈後下下執行結束程式

對於問題2 while(1)就是條件為永真 你用while(3) while(2) 都可以 就是while()函式的語句不停的執行 ,此時只能用跳轉或者break 語句來跳出迴圈

但是while(0)表示永假 即while()裡面的不執行 當然do while()除外 它是先執行後判斷,但是也僅僅執行席次就不在執行了for(;;)裡面空的意思就是條件為永真,沒有退出的判別條件也就是相當於while(1)(習慣用 1 0 表示真假) 當然也可以用break或者跳轉退出迴圈,但是那和for(;;)的判斷無關。 所以for(;;)簡單的講就是條件為永真 迴圈不斷的執行 除非遇到函式內部的跳轉 或者函式裡面巢狀的判斷退出為止

eg : 1>

int i=0;

int j=0;

for(;;) //不停的死迴圈

2>int i=0;

int j=0;

for(;;)

不停的迴圈直到i>10由內部判斷退出迴圈

對於問題3 你只要將 1維理解 和for語句的一維理解透徹 再在此基礎上擴充套件就行了

多維陣列可以分解為多個一維陣列的 多個for的巢狀同樣可以分解為一個一個的迴圈

只要很清晰的知道 陣列下標 與判斷時候條件值的狀態 就好分析了

對於初學者來數 陣列畫圖分析 以**的形式在紙上分析,而迴圈語句同樣的將判斷的條件分解來 在紙上模擬,一步一步的跟進狀態 從簡單的開始慢慢深入 ,不怕麻煩 仔細研究很如意理解的.

5樓:匿名使用者

n++是先判斷後執行自加運算,++i是先執行自加運算後進行邏輯判斷

舉例來講for(i=1;i<2;i++)會執行一次for迴圈內的語句,而for(i=1;i<2;++i)則不會

6樓:匿名使用者

首先,要明確n 與 i的區別:

n ,執行後,表示式的值為n,n自增1

i,執行後,表示式的值為i ,i自增1

表示式的值不同,但執行完後變數的值都自增1,所以用哪種自加都一樣。

7樓:s**w雨

說白了,就是n++.++i裡面加號的區別,加號在前,就是先自加1再計算。加號在後面,就是計算後再自加1。

用手機回答的,希望能幫到你!

c語言的for迴圈的條件語句中 i++; 和 ++i; 有什麼區別?

8樓:々了了

表示式三的位置嗎?

那樣就沒有區別了

不過奉勸lz不要看++i 和i++在printf中得例子,例如 pirntf("%d",++i);

這個例子不恰當,涉及的東西更多,只需明白++的先後就可以了

9樓:匿名使用者

沒區別~

給個有區別的例子

a[i++] = 1

a[++i] = 1

前面相當於 a[i] = 1; i ++;

後面相當於 i ++; a[i] = 1;

10樓:匿名使用者

for迴圈如果後面沒有再用到i沒有區別

真要要說的話++i效率比較高

i++ 相當於 tmp = i, tmp++, i = tmp++i相當於 i = i + 1

11樓:

在迴圈中通常是在迴圈變數更新時用到i++; 或++i; 此時二者用法完全一樣沒有區別;

只有在考試時才會用到二者的真正區別吧。

12樓:匿名使用者

i++是先用i的值,在自增。++i是用i先自增,在使用自增後的值。

13樓:作風格

i++是先加再呼叫,++i是先呼叫再加

14樓:淘氣的峰

i++先執行再加

++i先加在執行

int i=1;

printf("%d",++i); //輸出是2——————————————

int i=1;

printf("%d",i++); //輸出是1

15樓:匿名使用者

for迴圈中確實是沒有區別的(功能實現上)!

16樓:匿名使用者

i++先比較i的值然後++

++i是先++然後比較i的值

c語言,for語句中,表示式3,i++與++i的作用一樣嗎?

17樓:匿名使用者

不一樣,但是for語句中只需要i自增1就可以了,所以結果一樣。其實i++和++i很好區分,比如

main()

int a,b,i=1;

a=i++;

printf("%d,%d\n",a,i);

b=++i;

printf("%d,%d\n",b,i);

輸出值為1,2

3,3;

i++和++i都表示i自增,但是a=i++表示將i的值賦給a,而b=++i則表示先將i自增一下後賦給b.

18樓:匿名使用者

如果i++和++i單獨寫,二者的功能一樣

只有把他們寫到另外的表示式中才不一樣

例如:c=i++;

c=++i;

19樓:七絃_斂月

++i 和 i++單獨成一個語句的時候,其作用效果是一樣的~

c語言中for語句迴圈中表示式3為什麼是i++不是++i啊?

20樓:來生繁景

for迴圈的這個都行,只是習慣性寫i++,大家都預設這種寫法了

21樓:噬血之神

i++和++i都行,沒什麼區別,都是將i逐級遞增

c語言中,迴圈語句中的++i 和i++表達的意思一樣不?

22樓:腹劍懸針

c語言中bai,迴圈語句中的++i 和i++表達du的意思都是變數自zhi增1;

單獨是一個語句dao時無區別,專作為賦值表示式的右值時有屬差異:

例子:#include "stdio.h"

void main()

23樓:街角轉身

不一樣,++i 輸出的值是i+1後的值 i++ 輸出結果就是i的值

24樓:波波球

您好,再迴圈體

bai內他們連個是等du價的,僅僅表示自增zhi,但是dao通常使用i++

for(i=1; i<=10; i++)

{}先給 " i " 賦初版

值1, 判斷 " i " 是否

權小於等於10, 若是則執行語句, 之後值增 加1。再重新判斷, 直到條件為假, 即i>10時, 結束迴圈。

25樓:匿名使用者

如果單獨寫成一句,意思沒有區別,都是對i進行+1操作。

但是如果和其他語句組成符合專語句就不一屬樣了,例如,i = 10; a=++i;結果是a=11;而a=i++;結果是a=10;原因就是對於a=++i;由於++在前,所以先對i進行+1操作,所以a=11,而a=i++;++在後,所以先a=i=10然後再對i進行+1操作。

26樓:匿名使用者

不一樣,++i是先加1再賦值

i++則是先賦值,再加1

27樓:卒子的瘋狂

後置++的意思:先運算,後自增

前置++的意思:先自增,後運算

28樓:匿名使用者

++i與i++的區別:

前置操作符將i加1後直接返回i的結果;

後置操作符需要先返回i的值然後進行加1運算;

一般來說,前置操作符的運算工作更少,所以在二者作用基本沒有差別的話,以前者作為首選

29樓:匿名使用者

不一樣的。

++i:

復++在前面制,屬於前置運算,意思就

bai是先進行加法再

du賦值(給等號另zhi一邊的dao值);

i++:++在後面,屬於後置運算,意思就是先賦值再進行加法;

這兩種差異主要表現在賦值運算中。

比如 i=1;a=i++;cout <

i=1;a=++i;cout <

c語言中語句m n什麼意思,C語言中語句m n什麼意思

m相當於m m 1,再用到m的值 而n 相當於 先用到n的值,再進行 m m 1 當然,這個是指在同一個表示式內。對於你的這道題,a m 1 n m n 這是,判斷成立,執行 m,所以,表示式以後,n 1c n,所以c 0 這是複合賦值運算。m n 相當於m m n 即,從m與n相減,然後再將結果儲...

c語言中ifelse語句與switch語句區別

1 兩者本質的區別是 if else語句更適合於對區間 範圍 的判斷,而switch語句更適合於對離散值的判斷 2 示例 判斷65分到85分之間的學生有哪些適合用if else語句,因為 65,85 是區間 而判斷一個學生的班級是一班 二班還是三班適合用switch語句,因為一班 二班 三班是離散值...

c語言中if語句的巢狀怎理解,C語言中三個if語句的巢狀怎理解

不知道你說的是橫 向還是縱向 縱向就是多個平級的 if 語句的並列 如 if if if 而橫向就是 if 語句中包含if 語句如 if if if 我正好學到這裡剛剛試驗了一下是可以的 以下 但是因為格式的關係else if a 2 b 4 else else return 0 嚴格按照if語句 ...