C语言逗号表达式的赋值问题

img


这个依据逗号表达式来说不是应该将最后一个值当做整体的值吗,所以为什么这个结果不是3。

你那个是先根据运算符的优先级,等于号是大于逗号,所以一赋值给a,假如你123用小括号括住,然后我三就赋值给a了,这是一道关于运算符优先级的问题,希望能给您帮助

你好,参考代码


```c
#include<stdio.h>
int main(){
    int a;
    a = (1,2,3);//括号改变运算优先级
    printf("%d",a);
    return 0;
} 

运行结果如图

img

1、=号的优先级大于,号
2、第一次a=1时,这个表达式的赋值已经结束,所以输出打印就是1,如果想要等于3的话,需要把数字放在一个总体中

这个表达式是这样的
a=1,
2,
3,

这是优先级问题逗号表达式优先级比赋值低