-
int c=9,d=0;
c=c++%5;這裡相當於c=c%5,c++; 所以 c=5。
d=c; //d=c;所以 d=5。
printf("d=%d",d);
-
c=c++%5;這句話的運算可以寫成:
1、c=c%5;此時,c = 4
2. C++,這就是 C=5 的原因。
-
首先,c = c++%5
c=9,因為c++的++是後來計算的,所以就變成了c=9%5,c等於4,然後c再加起來,所以是5
-
除二樓外,上述陳述均正確。
-
c = c++ 5;
至於編譯器,該語句不依賴於評估順序,我在 bcb 和 vc 中得到的結果為 5,在 gcc 中得到的結果為 4。
a[i] = i++;這也與特定的編譯器有關,在不同的構建環境中,結果可能會有所不同。
-
這種說法在不同的語境下會產生不同的結果,不適合移植。 而且,這樣的陳述不容易閱讀,應該單獨寫"c=c%5;c++"
-
這裡 p 是乙個指標,依次指向陣列中的每個元素。 p=a 將 p 指向第乙個元素 a[0],或 p=&a[0],對於每個 p++,指標 p 可以遞增以指向每個後續元素。 最後乙個陣列元素是 a[9],當 p 指向 a[9] 時,p-a==9(在本例中為 p==&a[9],a==&a[0])。
因此,迴圈條件應為 p-a<10 或 p-a<=9。
順便說一句,指標 s 總是用於指向最大值元素,因此每當 *p>*s 時,s 都會更新為 p(即程式中的 s=p; )
第乙個 null:&a[i] 或 a+i
第二個 null:p-a
第三個空的:>
第四個 null:*s
-
p 和 s 都指向陣列 a 的第乙個位址,每次迴圈時加 p,p-a 是減去 p 的次數,差值是 p 偏移的次數,陣列長度為 10
最多可偏移 10 倍。
它在書中寫錯了。
無限迴圈的原因是 j 被定義為無符號字元,所以它總是正數,而 for 迴圈不能跳出來,所以將 j 定義為 char 就足夠了,而不是 char。 >>>More