Simmple代码在DevC ++中正确运行,但在Visual Studio Code中未正确运行

时间:2019-05-27 22:05:33

标签: c++

代码运行良好的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

2 个答案:

答案 0 :(得分:2)

您用于Circles调用的格式字符串是错误的。由于您的变量是双精度型,因此应使用shape s = &p; scanf用于整数。

Visual Studio会尽可能对printf参数进行一些分析,并警告您问题所在。 DevC ++显然没有这样做,因此它不会生成警告。

使用任一编译器的行为都是未定义的,而且您很不幸,似乎无法与DevC ++一起使用。

答案 1 :(得分:0)

我认为DevC ++使用的编译器不同于VS Code使用的编译器,主要问题在于printf中。您正在使用%d,这意味着一个integer参数,但您正在向其中传递一个double。 DevC ++编译器可能会自动将双精度值截断为整数值。将其切换到%f应该可以解决问题