一个很简单的问题,就是“输入三个整数,然后输出它们之中的最大值和最小值”。
现在的问题是,在vs2022上会显示出错
#include
int main()
{
int min, max;
int a, b, c;
printf("请输入三个整数\n");
printf("整数1:"); scanf("%d", &a);
printf("整数2:"); scanf("%d", &b);
printf("整数3:"); scanf("%d", &c);
max = a;
min = a;
if (min > b)
min = b;
if (max < b)
max = b;
if (max < c)
max = c;
if (min > c)
min = c;
printf("最大的数是:%d\n", max);
printf("最小的数是:%d\n", min);
return 0;
}
请教一下问题在哪,为什么会这样。
(日后主要要用vs,所以希望解决一下)
vs里面认为scanf和printf这两个函数都不安全,它提供的安全函数是scanf_s和printf_s,改成这两个就可以了
这个和编译器无关,本身代码是没有问题的,只是vs觉得这个函数不安全,你可以使用他所说的安全的函数。如果非要使用scanf,直接在设置里把sdl检查关掉即可。
至于你说的“不同编译器为什么对相同代码有不同结果”,确实会有所不同,但主要体现在一些运算上,最简单的例子就是i +++ i +++ i +++,应该避免写出这种迷惑性大的代码。