根据标准c,为什么j= i++ * i++
未定义和j=i++ & i++
完全合法的陈述?
答案 0 :(得分:4)
它们都是未定义的行为。
j = i++ * i++; // undefined behavior
j = i++ & i++; // undefined behavior
对象i
的值在两个示例中的两个序列点之间被多次修改。
答案 1 :(得分:1)
答案 2 :(得分:1)
正如神秘主义和ouah所说,两者都是未定义的。
j = i++ && i++;
定义明确,因为&&快捷方式,这意味着,它必须首先评估左操作数,然后 - 如果左操作数为真 - 右操作数。