405794672 发表于 2020-5-20 11:32:57

VS2019免费版编译很不稳定啊

比如我下面的代码,注释中的问题一直有。今天无聊看看exe文件。结果exe说要买9本书然后一闪而没。于是我加了system(“pause")。头文件不用说了,肯定加了。调试时却发现sort函数没有执行。然后我又注释掉system(”pause")。调试,sort函数又运行了。然后我再取消注释,这会sort函数正常运行了。所以这vs2019一会儿东一会儿西。同样的代码不同的时间编译结果不同。
#include<stdio.h>
int TOTAL;//换成全局变量,照样是输入几本就几本,去重完全没有起作用
void total(int book[], int n)//统计书本数量并去重
{
      int j,m;
      for (j = 0; j < n-1; j++)
      {
                if (book == book)
                {
                        for (m = j; m < n - j; m++)
                        {
                              if (m < n - 2)
                              {
                                        book = book;
                              }
                              else
                              {
                                        book = NULL;
                              }
                        }
                        TOTAL--;
                        //i--;
                }
      }
      printf("总共需要买%d本书\n", TOTAL);
}
void sort(int book[],int n)//对里面内容排序并输出
{
      int i,j;
      for (i = 0; i < n - 1; i++)
      {
                for (j = 0; j < n - 1 - i; j++)
                {
                        if (book > book)
                        {
                              book ^= book;
                              book ^= book;
                              book ^= book;
                        }
                }
      }
      for (i = 1; i <= (n / 10); i++)
      {
                for (j = (i - 1) * 10 + 1; j <= i * 10; j++)
                {
                        printf("%d\t", book);
                }
                printf("\n");
      }
}

void main()
{
      int i,num;
      printf("请输入想买书的同学数量(不超过100人):\n");
      scanf("%d\n",&TOTAL);
      //fflush(stdin);加此代码则不执行sort函数
      for (i = 0; i < TOTAL; i++)//总是先输入,再连续出现两行printf内容,然后才正常。始终未查出什么原因
      {
                printf("请输入第%d个同学想买的书的IBSN号:\n",i+1);
                scanf("%d",&num);
      }
      total(num, TOTAL);
      sort(num, TOTAL);
      //sort(num, total(num, n));
}

永恒的蓝色梦想 发表于 2020-5-20 11:36:28

VS的问题的可能性基本为0。
建议找找自身问题。

老八秘制 发表于 2020-5-20 12:23:14

永恒的蓝色梦想 发表于 2020-5-20 11:36
VS的问题的可能性基本为0。
建议找找自身问题。

2019还不完全成熟好吧{:10_277:}
2017不香吗

永恒的蓝色梦想 发表于 2020-5-20 12:32:55

老八秘制 发表于 2020-5-20 12:23
2019还不完全成熟好吧
2017不香吗

这都一年了{:10_277:}明年都出2021了{:10_277:}还不成熟呢

老八秘制 发表于 2020-5-20 12:36:28

永恒的蓝色梦想 发表于 2020-5-20 12:32
这都一年了明年都出2021了还不成熟呢

{:10_277:}

chxchxkkk 发表于 2020-5-20 21:44:49

一直在用,没出过啥问题

赚小钱 发表于 2020-5-21 16:03:21

初学者不要想着为微软这种企业找 bug,可能性近乎于 0
同样不要认为是编译器 bug,可能性近乎于0
如果,你了解了企业级别,软件发布的流程,你都会觉得自己的想法可笑。

然后,解答你的问题。
首先,感谢你,我以前从来没有想过 flush(stdin) 这样的操作。所以,就去查了资料。获得了如下的新知识。

use-fflushstdin-c
Microsoft C++ Doc
stackoverflow using fflush stdin
页: [1]
查看完整版本: VS2019免费版编译很不稳定啊