关于未定义行为的警告
有一个简单的测试代码:程序代码:
#include "stdio.h" int main(void) { int i,j; i=2; j=8; j=(i=6)+(j=3);//warning在这一行 printf("%d %d",i,j); return 0; }
编译时(gcc 8.1.0),出现一个未定义行为的警告:
warning: operation on 'j' may be undefined [-Wsequence-point]
对于出现warning的行:
j=(i=6)+(j=3);
我的理解是,先进行i=6和j=3的赋值运算,然后再计算j=6+3,即j=9。
这一过程很清晰,怎么编译器会抛出关于j的未定义行为warning呢?