i++和++i的區別及在for()循環語句中的應用細節
阿新 • • 發佈:2019-05-07
i+1 pau 情況 pan urn return div color 相關
#include<stdio.h> #include<stdlib.h> int main() { int a = 5, b; b = a++; //我們可以這樣理解該語句執行細節:步驟1、b=a; 步驟2、a=a+1; printf("\n a = 5 ,b未賦值,若 b = a++, 則有:b = %d,a = %d \n\n", b, a); int c = 5, d; d = ++c; //我們可以這樣理解該語句執行細節:步驟1、c=c+1; 步驟2、d=c; printf("\n c = 5 ,d未賦值,若 d = ++c, 則有:c = %d , d = %d \n\n", c, d); int e = 16, f; f = (e++) + ++e; /* 我們可以這樣理解該語句執行細節: 步驟1、e=e+1=16+1=17(因為這個表達式裏面,++e的優先級最高,要先算它); 步驟2、f=17+17=34; 步驟3、e=e+1=17+1=18; */ printf("\n e = 16 , f未賦值,若 f = e++ + ++e,則有e = %d,f = %d \n\n", e ,f); int j = 16, k; k = ++j + j++; /* 我們可以這樣理解該語句執行細節:步驟1、j=j+1=16+1=17; 步驟2、k=17+17=34,步驟3、j=j+1=17+1=18; */ printf("\n j = 16, k未賦值,若 k = ++j+ j++,則有j = %d ,k = %d \n\n", j , k); int m = 20, n; n = 1 + (m++); //我們可以這樣理解該語句執行細節:步驟1、n=1+m=1+20=21;步驟2、m=m+1=20+1=21; printf("\n m = 20, n未賦值,若 n = 1 + m++,則有m = %d , n = %d \n\n", m, n); int p = 50, q; q = 1 + ++p; //我們可以這樣理解該語句執行細節:步驟1、p=p+1=50+1=51;步驟2、q=q+1=51+1=52; printf("\n p = 50, q未賦值,若q = 1 + ++p,則有p = %d , q = %d \n\n", p, q); system("pause"); return 0; }/* 通過上述程序語句,我們可以這樣理解:1、 含有++i的表達式,按照程序優先級(具體參見相關資料,一般先算i=i+1; 2、含有i++的表達式,i=i+1的優先級排在最後(哪怕是(i++)這種形式),是表達式語句最後執行的一個步驟 (在VS2017編譯是這樣,在codeblocks不是) 3、引申到for( ;判定語句;i++)和( ;判定語句;++i)的情況,這兩種形式效果是一樣的。因為無論是i++,還是++i, 它都是一個表達式,在這個表達式語句執行完之前,是不會執行判定語句的。也就是執行完i=i+1後(無論是i++,還是++i), 再將i代入判定語句(在VS2017和codeblocks都同樣結果) */
#include<stdio.h> #include<stdlib.h> int main() { int i,j; for (i=1; i <= 10; i++) printf("%d ", i); printf("\n i=%d \n", i); for (j = 1; j <= 10; j++) printf("%d ", j); printf("\n j=%d \n", j); system("pause"); return 0; }
#include<stdio.h> #include<stdlib.h> int main() { int i,j,x=1,y=1; for (i = 1; i <= 10; i++) { printf("x=%d \n", x); x++; } printf("\n i=%d \n\n", i); for (j = 1; j <= 10; j++) { printf("y=%d \n", y); ++y; } printf("\n j=%d \n", j); system("pause"); return 0; }
i++和++i的區別及在for()循環語句中的應用細節