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 < 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相減,然後再將結果儲... 1 兩者本質的區別是 if else語句更適合於對區間 範圍 的判斷,而switch語句更適合於對離散值的判斷 2 示例 判斷65分到85分之間的學生有哪些適合用if else語句,因為 65,85 是區間 而判斷一個學生的班級是一班 二班還是三班適合用switch語句,因為一班 二班 三班是離散值... 不知道你說的是橫 向還是縱向 縱向就是多個平級的 if 語句的並列 如 if if if 而橫向就是 if 語句中包含if 語句如 if if if 我正好學到這裡剛剛試驗了一下是可以的 以下 但是因為格式的關係else if a 2 b 4 else else return 0 嚴格按照if語句 ...c語言中語句m n什麼意思,C語言中語句m n什麼意思
c語言中ifelse語句與switch語句區別
c語言中if語句的巢狀怎理解,C語言中三個if語句的巢狀怎理解