朝歌兮、 发表于 2020-2-23 20:56:17

有没有人一说一下这个程序的运行过程和结果

本帖最后由 朝歌兮、 于 2020-2-23 20:58 编辑

#define _CRT_SECURE_NO_WARNINGS   
#include <stdio.h>
int main(void)
{
        int a;
        scanf("%d", &a);
        if (a++ < 9)printf("%d\n", a);
        else
        {
                printf("%d\n", a--);
        }
        return 0;
}
当a=9的时候,运行结果为什么是10?

一个账号 发表于 2020-2-23 21:10:59

首先执行判断 if (a++ < 9) 里面的 a++,现在 a = 10

然后执行 printf("%d\n", a--); 先打印 a ,然后执行 a--

良弓无箭 发表于 2020-2-23 21:14:30

当你输入a=9的时候,先判断a++是否大于9,但此时已经执行过a++了。所以a=10。执行else语句。输出a--,但自增自减的作用是在下一轮的时候在显示,所以输出10。如果你在输出一下a,结果就是9了。
#include <stdio.h>
int main(void)
{
      int a;
      scanf("%d", &a);
      if (a++ < 9)
      {
                                printf("%d\n", a);
                }
      else
      {
                printf("%d\n", a--);
                printf("%d\n", a);
      }
      return 0;
}

朝歌兮、 发表于 2020-2-23 21:16:25

一个账号 发表于 2020-2-23 21:10
首先执行判断 if (a++ < 9) 里面的 a++,现在 a = 10

然后执行 printf("%d\n", a--); 先打印 a ,然后执 ...

感谢!后自减是先打印a,然后再做自减对吗?

朝歌兮、 发表于 2020-2-23 21:22:19

良弓无箭 发表于 2020-2-23 21:14
当你输入a=9的时候,先判断a++是否大于9,但此时已经执行过a++了。所以a=10。执行else语句。输出a--,但自 ...

明白了   感谢!
页: [1]
查看完整版本: 有没有人一说一下这个程序的运行过程和结果