我尝试在Eclipse上用C语言编程,我已经安装并配置了MinGW,但是我遇到了一个问题,我不明白:
我有一些简单的代码:
# include <stdio.h>
# include <stdlib.h>
int main(void) {
int num1,num2;
setbuf(stdout,NULL);
printf("enter two numbers");
scanf("%d%d",&num1,&num2);
if(num1>num2){
printf("num1 is greater than num2");
}else{
printf("num2 is greater than num1);
}
return 0;
}
在我编译并运行后,它显示“Enter two numbers”(输入两个数字),我输入了两个数字,我看不到任何进一步的输出,键盘功能在控制台屏幕上不起作用,它没有给予我一个错误,但它确实在控制台上显示了一些奇怪的输出:
<terminated>
<terminated>(exit value: -1.073.741.515) CPS:exe
2条答案
按热度按时间klsxnrf11#
您没有正确阅读值:
scanf
的%d
说明符需要一个int *
(即指向int
的指针)作为参数。它需要一个变量的地址,以便能够将值写入存储该地址的位置。相反,您传递的是
num1
和num2
的当前值,这些值实际上是垃圾值,因为变量尚未写入。相反,您希望:
f3temu5u2#
我不知道你发布的代码是否与你编译的完全相同,当我复制并编译你发布的代码时,gcc报告了一个错误,位于行:
printf()中缺少结束引号;在我修复了这个错误之后,它运行得很好。我的环境是
Linux桌面-7VH 0 PN 1 5.4.72-微软标准-WSL 2 #1 SMP星期三10月28日23:40:43 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
使用gcc:
版权所有(C)2019年自由软件基金会有限公司.