[英]How to determine why a C program outputs unexpected messages?
我正在嘗試在 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;
}
編譯並運行后,它顯示“輸入兩個數字”,我輸入兩個數字,我看不到任何進一步的 output 和鍵盤 function 在控制台屏幕上不起作用,它沒有給我一個錯誤,但它確實在控制台上顯示了一些奇怪的 output:
<terminated>
<terminated>(exit value: -1.073.741.515) CPS:exe
您沒有正確讀取值:
scanf("%d%d",num1,num2);
scanf
的%d
格式說明符需要一個int *
,即指向int
的指針作為參數。 它需要變量的地址才能將值寫入存儲該地址的位置。
相反,您傳遞的是num1
和num2
的當前值,它們本質上是垃圾值,因為尚未寫入變量。
你反而想要:
scanf("%d%d",&num1,&num2);
我不知道您發布的代碼是否與您編譯的完全相同,當我復制並編譯您發布的代碼時,gcc 在行報錯:
printf("num2 is greater than num1);
printf() 中丟失了結束引號; 在我修復了這個錯誤之后,它運行良好。 我的環境是
Linux DESKTOP-7VH0PN1 5.4.72-microsoft-standard-WSL2 #1 SMP 2020 年 10 月 28 日星期三 23:40:43 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
使用 gcc:
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 版權所有 (C) 2019 Free Software Foundation, Inc.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.