Mat*_*haq 18 c undefined-behavior
这段代码是:
y = x = x + 1;
Run Code Online (Sandbox Code Playgroud)
C中的未定义行为?
小智 32
回答你的问题
.
会发生什么事情
会发生:
int x = 1; /* ASSUME THIS IS SO */
y = x = x + 1;
/* Results: */
y == 2;
x == 2;
Run Code Online (Sandbox Code Playgroud)
如何编译
同样如下:
x += 1;
y = x;
Run Code Online (Sandbox Code Playgroud)
为什么这不是未定义
因为您没有x在同一个表达式中编写,所以您可以阅读它.您只需将其设置为自身+ 1,然后分配y给值x.
您的未来
如果您发现代码令人困惑,您可以使用括号来提高可读性:
y = x = (x + 1);
Run Code Online (Sandbox Code Playgroud)