[英]How does this logic work: k+=(x=5,y=x+2,z=x+y) ;
這個邏輯是如何工作的: k+=(x=5,y=x+2,z=x+y);
它將如何給出結果 k == 22。當我初始化 k = 10 的值時
#include <stdio.h>
int main()
{
int x,y,z,k=10;
k+=(x=5,y=x+2,z=x+y);
printf("value of k %d ",k); //why it will show value of k =22
return 0;
}
在賦值語句的右側,使用了逗號運算符(從左到右依次兩次)。 它的值是最后一個操作數的值。 所以這個說法
k+=(x=5,y=x+2,z=x+y);
為了清楚起見,可以重寫為
k+=( ( x = 5, y = x + 2 ), z = x + y );
實際上等價於下面的一組語句
x = 5; // x is set to 5
y = x + 2; // y is set to 7
z = x + y; // z is set to 12
k += z; // k is set to 22
來自 C 標准(6.5.17 逗號運算符)
2 逗號運算符的左操作數被評估為 void 表達式; 在它的求值和右操作數的求值之間有一個序列點。 然后對右操作數求值; 結果有它的類型和值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.