6 7 逗號運算子

2022-08-31 06:27:12 字數 1174 閱讀 5368

逗號運算子並不侷限於在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賦值的 有三個表示式,用逗號分開,所以最終的值...