为什么此代码没有错误 能否详细解释一下

#include <stdio.h>
int main(void)
{
int x, a;
x = (a = 4, 5 * 3);
printf("%d\n", x);
x = a = 4, 5 * 3;
printf("%d\n", x);
return 0;
}

为什麽你认为这个代码有错误啊?
因为逗号表达式的优先级低于赋值运算符
所以x=(a=4,5 * 3)先执行a=4,然后是括号里的逗号表达式,返回逗号表达式最右侧的表达式结果,所以x=5 * 3=15
x = a = 4, 5 * 3;先执行a=4,然后x=a,所以x=4,最后是逗号表达式


x = (a = 4, 5 * 3);
这是逗号表达式,a=4,x返回最后一个表达式的值15;
x = a = 4, 5 * 3;
x,a等于4,5*3不会返回结果。