红袍耗子 发表于 2020-9-14 14:33:45

关于i++和++i的问题

#include <stdio.h>

int main()
{
        int a=-1, b=1, k;
        if((++a<0) && (b--<=0))
        {
                printf("%d %d\n",a, b);
        }
        else
        {
                printf("%d %d\n",b, a);
        }

        return 0;
}
为什么最后结果不是输出0 0,而是输出1 0呢????无法理解,求解释。

红袍耗子 发表于 2020-9-14 14:34:27

{:9_241:}

xieglt 发表于 2020-9-14 14:39:20

本帖最后由 xieglt 于 2020-9-14 14:42 编辑

int main()
{
      int a=-1, b=1, k;
      //这个 if 语句先判断 ++a < 0 是否成立? a = -1 ,++a后a = 0 ,所以不成立
       //第一个条件判断为不成立后,&& 后面的条件就不再进行判断了,直接跳到else,所以 b--没有执行。 b 仍然是1
      if((++a<0) && (b--<=0))
      {
                printf("%d %d\n",a, b);
      }
      else
      {
                printf("%d %d\n",b, a);
      }

      return 0;
}
页: [1]
查看完整版本: 关于i++和++i的问题