代码运行良好的DevC ++,但不能运行Visual Studio代码
正在做作业问题。简单代码将两个整数相加。代码看起来不错,但是运行它总是给我错误的结果。失去理智后,我尝试在DevC ++中运行它,从而给了我预期的结果。
我对编码非常陌生。 Visual Studio Code试图在输出窗口中告诉我某些内容,但是我不知道它是什么试图告诉我。
#include <stdio.h>
int main()
{
double x,y,z;
printf("Enter first number:" );
scanf("%i", &x);
printf("Enter second number:" );
scanf("%i", &y);
printf("the first number is: %d \n",x);
printf("the second number is: %d \n ",y);
z= x+y;
printf("Output 1: The result is %d . \n",z);
printf("Output 2: The sum of %d and %d is %d . ",x,y,z);
return 0;
}
------------------- VS代码输出窗口------------------------ -
hwidk.cpp:19:8: warning: format '%d' expects argument of type 'int', but argument 2 has type 'double' [-Wformat=]
printf("Output 1: The result is %d . \n",z);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~
[hwidk.cpp 2019-05-27 21:35:01.608]
hwidk.cpp:20:8: warning: format '%d' expects argument of type 'int', but argument 2 has type 'double' [-Wformat=]
printf("Output 2: The sum of %d and %d is %d . ",x,y,z);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~
hwidk.cpp:20:8: warning: format '%d' expects argument of type 'int', but argument 3 has type 'double' [-Wformat=]
[hwidk.cpp 2019-05-27 21:35:01.608]
hwidk.cpp:20:8: warning: format '%d' expects argument of type 'int', but argument 4 has type 'double' [-Wformat=]
-------------- Visual Studio以------------------------
Enter first number:5
Enter second number:6
the first number is: 5
the second number is: 6
Output 1: The result is 7 .
Output 2: The sum of 5 and 0 is 6
答案 0 :(得分:2)
您用于Circle
和s
调用的格式字符串是错误的。由于您的变量是双精度型,因此应使用shape s = &p;
。 scanf
用于整数。
Visual Studio会尽可能对printf
参数进行一些分析,并警告您问题所在。 DevC ++显然没有这样做,因此它不会生成警告。
使用任一编译器的行为都是未定义的,而且您很不幸,似乎无法与DevC ++一起使用。
答案 1 :(得分:0)
我认为DevC ++使用的编译器不同于VS Code使用的编译器,主要问题在于printf
中。您正在使用%d
,这意味着一个integer
参数,但您正在向其中传递一个double
。 DevC ++编译器可能会自动将双精度值截断为整数值。将其切换到%f应该可以解决问题