输出和为什么?根据我的知识,在执行语句后增加评估。如果逻辑'i'值为1或2,则在左侧?
#include <stdio.h>
int main()
{
int i = 1;
if (i++ && (i == 1))
printf("Yes\n");
else
printf("No\n");
}
答案 0 :(得分:2)
这里左侧是否逻辑'i'值为1或2?
它将为2,因为在逻辑&&
的左右操作数的评估之间存在sequence point。
c-faq将序列点定义为
序列点是尘埃落定的时间点,到目前为止所见的所有副作用都保证完整。
这意味着在评估&&
的右操作数之前,保证完成对i
的副作用。
答案 1 :(得分:-1)
结果将是否,因为 i 在评估 i ++ 后会立即递增。
请尝试i++ * i++ * i++
。