C 复杂表达式的优先顺序 #包括 void main() { int-num,var; num=(var=15,var+=35); printf(“%d”,num); }

C 复杂表达式的优先顺序 #包括 void main() { int-num,var; num=(var=15,var+=35); printf(“%d”,num); },c,operators,C,Operators,这里num的计算结果为50。我想验证一下 我的推理:-在(..)内部,我们首先从左到右读取所有可用的操作数,确定优先顺序,然后计算+==,(按顺序)。最后我们得到了var=50,它被分配给num。我正确吗?表达式 #include<stdio.h> void main() { int num, var; num = (var=15, var+=35); printf("%d",num); } 使用逗号运算符,该运算符从左到右计算每个子表达

这里num的计算结果为50。
我想验证一下 我的推理:-在(..)内部,
我们首先从左到右读取所有可用的操作数,
确定优先顺序,
然后计算+==,(按顺序)。
最后我们得到了var=50,它被分配给num。我正确吗?

表达式

#include<stdio.h>
void main()
{
    int num, var;
    num = (var=15, var+=35);
    printf("%d",num);
}
使用逗号运算符,该运算符从左到右计算每个子表达式。逗号引入一个序列点,因此在计算下一个子表达式之前应用每个子表达式的副作用。表达式的类型和结果是最右边的子表达式的类型和结果。这相当于写:

(var=15, var+=35)

请注意,上面使用的逗号运算符与函数调用中分隔参数的逗号不同-函数参数不保证从左到右求值,并且只保证在调用函数之前应用副作用,不是在计算每个参数之后。

是关于执行
(…)
内容的顺序的唯一问题吗?@ryker…是的
var = 15;
var += 35;
num = var;