小编max*_*001的帖子

语句'int val =(++ i> ++ j)吗?++ i:++ j;`调用未定义的行为?

给定以下程序:

#include <stdio.h>
int main(void)
{
    int i = 1, j = 2;
    int val = (++i > ++j) ? ++i : ++j;
    printf("%d\n", val); // prints 4
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

的初始化val似乎可能隐藏了一些未定义的行为,但是我看不到对象被多次修改或在其间没有序列点的情况下被修改和使用的任何地方。有人可以对此进行纠正或证实吗?

c ternary-operator sequence-points

24
推荐指数
3
解决办法
1655
查看次数

标签 统计

c ×1

sequence-points ×1

ternary-operator ×1