C中的后增量概念

时间:2015-06-06 17:31:34

标签: c operators

输出和为什么?根据我的知识,在执行语句后增加评估。如果逻辑'i'值为1或2,则在左侧?

#include <stdio.h>
int main()
{
    int i = 1;
    if (i++ && (i == 1))
        printf("Yes\n");
    else
        printf("No\n");
}

2 个答案:

答案 0 :(得分:2)

  

这里左侧是否逻辑'i'值为1或2?

它将为2,因为在逻辑&&的左右操作数的评估之间存在sequence point

c-faq将序列点定义为

  

序列点是尘埃落定的时间点,到目前为止所见的所有副作用都保证完整

这意味着在评估&&的右操作数之前,保证完成对i的副作用。

答案 1 :(得分:-1)

结果将是,因为 i 在评估 i ++ 后会立即递增。
请尝试i++ * i++ * i++