逗號運算子並不侷限於在for迴圈中使用,但是這是它最常用的地方。逗號運算子有兩個其他性質。首先,它保證了被它分隔的表示式從左往右求值(換言之,逗號是乙個序列點,所以逗號左側項的所有***都在程式執行逗號右側項之前發生)。因此,ounces在cost之前被初始化。在該例中,順序並不重要,但是如果cost的表示式中包含了cost時,順序就很重要。例如,假設有下面的表示式:
ounces++, cost = ounces * first_oz
在該表示式中,先遞增ounces, 然後在第2個表示式中使用ounces新值。
作為序列點的逗號保證了左側子表示式的***在對右側子表示式求值之前發生。
記住,任何表示式後面加上乙個分號就成了表示式語句。
另外,下面的語句
houseprice = (249,500);
賦給houseprice的值是逗號右側子表示式的值,即500。
逗號也可用作分隔符。在下面語句中的逗號都是分隔符,不是逗號運算子:
char ch, date;
printf("%d %d\n", chimps, chumps);
賦值運算子:
下面的運算子用右側的值,根據指定的操作更新左側的變數:
+= 把右側的值加到左側的變數上
-= 從左側的變數中減去右側的值
*= 把左側的變數乘以右側的值
/= 把左側的變數除以右側的值
%= 左側變數除以右側值得到的餘數
示例:rabbits *= 1.6;與rabbits = rabbits * 1.6;相同
這些組合賦值運算子與普通賦值運算子的優先順序相同,都比算術運算子優先順序低。
因此,contents *= old_rate + 1.2;
最終的效果與下面的語句相同:
contents = contents * (old_rate + 1.2);
逗號運算子:
逗號運算子把兩個表示式連線成乙個表示式,並保證最左邊的表示式最先求值。逗號運算子通常在for迴圈頭的表示式中包含更多資訊。整個逗號表示式的值是逗號右側表示式的值。
示例:for (step = 2, fargo = 0; fargo < 1000; step *= 2)
fargo += step;
逗號運算子
在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後乙個表示式的值。假設b 2,c 7,d 5,a1 b,c d 3 a2 b,c d 3 對於第一行 有三個表示式,用逗號分開,所以最終的值應該是最後乙個表示式的值,也就是d 3,為8,所以a1 8。對於第...
逗號運算子
c 語言中,逗號 也可以是運算子,稱為逗號運算子 comma operator 逗號運算子可以把兩個以上 包含兩個 的表示式連線成乙個表示式,稱為逗號表示式。其一般形式為 子表示式1,子表示式2,子表示式n 例如 a b,c b,c 逗號運算子的優先順序是所有運算子中級別最低的,通常配合 for 迴...
逗號運算子
逗號運算子是指在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後乙個表示式的值。例子 int a1,a2,b 2,c 7,d 5 第1行 a1 b,c d 3 第2行 a2 b,c d 3 第3行 對於給a1賦值的 有三個表示式,用逗號分開,所以最終的值...