简单C程序的不可预测的输出

时间:2018-07-16 16:52:05

标签: c turbo-c

我从一开始就在练习C编程,但是当我执行简单的C程序将两个数字相加时,得到了意外的输出,我无法弄清楚,谁能提供编译器如何工作的详细说明此输出在幕后。

这里是提到的代码。我正在使用基本的Turbo IDE

#include<stdio.h>
#include<conio.h>
void main()
{
int a,b,c=0;
clrscr();
printf("Enter two numbers:");
scanf("%d%d", &a,&b);
c=a+b;
printf("sum of two numbers are %d", &c);
getch();
}


Output:

Enter two numbers:1
2
sum of two numbers are -16

3 个答案:

答案 0 :(得分:1)

您在行中有错误:-

printf("sum of two numbers are %d", &c);`

将其更改为:-

printf("sum of two numbers are %d", c);

&c用于打印地址。

修改后的代码:-

#include <stdio.h>
#include <conio.h>
void main()
{
    int a, b, c = 0;
    clrscr();
    printf("Enter two numbers:");
    scanf("%d%d", &a, &b);
    c = a + b;
    printf("sum of two numbers are %d", c); // not &c
    getch();
}

输出:-

Enter two numbers:3                                                                                                                                                                    
5                                                                                                                                                                                      
sum of two numbers are 8  

Turbo c非常过时。尝试gcc (如代码块之类的IDE)。另外,请确保您的代码正确打算

答案 1 :(得分:1)

问题似乎是您在不需要的变量c上使用了地址运算符。 &cc指针,因此,当您打印出来时,您实际上是在尝试打印c的内存地址,而不是那里存储的整数值,导致意外输出。所以

printf("sum of two numbers are %d", &c);

应该成为

printf("sum of two numbers are %d", c);

答案 2 :(得分:0)

您输入了错误的printf语法 用这个: printf("sum of two numbers are %d",c);