微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这个逻辑是如何工作的: k+=(x=5,y=x+2,z=x+y) ;

如何解决这个逻辑是如何工作的: 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,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 逗号运算符的左操作数被评估为空 表达;在它的评估和那个之间有一个序列点 正确的操作数。然后评估正确的操作数;结果 有它的类型和价值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。