4. 表達式
- 4.1 為什麼這樣的代碼:
a[i] = i++; 不能工作?
- 4.2 使用我的編譯器,下面的代碼
int i=7; printf("%d\n",
i++ * i++); 返回 49?不管按什麼順序計算, 難道不該打印出56嗎?
- 4.3 對於代碼
int i = 3; i = i++; 不同編譯器給出不同的結果, 有的為 3, 有的為 4,
哪個是正確的?
- 4.4 這是個巧妙的表達式:
a ^= b ^= a ^= b
它不需要臨時變量就可以交換 a 和 b 的值。
- 4.5 我可否用括號來強制執行我所需要的計算順序?
- 4.6 可是 && 和 || 運算符呢?
我看到過類似
while((c = getchar()) != EOF &&
c != '\n')
的代碼 ……
- 4.7 我怎樣才能理解複雜表達式?``序列點" 是什麼?
- 4.8 那麼, 對於 a[i] = i++; 我們不知道 a[] 的哪
一個份量會被改寫,但 i 的確會增加 1, 對嗎?
- 4.9 ++i 和 i++ 有什麼區別?
- 4.10 如果我不使用表達式的值, 我應該用 ++i 或 i++
來自增一個變量嗎?
- 4.11 為什麼如下的代碼
int a = 100, b = 100;
long int c = a * b; 不能工作?
- 4.12 我需要根據條件把一個複雜的表達式賦值給兩個變量中的
一個。可以用下邊這樣的代碼嗎?
((condition) ? a : b) = complicated_expression;
翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)