C语言 这个逻辑是如何工作的: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逗号操作符的左操作数计算为空的表情;在它的求值和它之间有一个序列点右操作数的。然后对右操作数求值;结果有它的类型和值。

相关内容

  • 没有找到相关文章

最新更新