[英]Scanf function in C with CodeBlocks IDE is buggy?
我在我的CodeBlocks中運行了一些簡單的代碼,我想知道為什么scanf
函數不能正確使用短褲!
下面的代碼是一個示例。 該代碼從用戶那里獲取了三個int
編號,然后再次打印出來,非常簡單-但是打印出的值與輸入的值不匹配。
#include <stdio.h>
int main()
{
short x, y, z;
printf("Please enter three integers! ");
scanf("%d %d %d", &x, &y, &z);
printf("\n num1 = %d , num2 = %d , num3 = %d ", x, y, z);
return 0;
}
說明符%d
僅用於int
變量,但是如果short
,則必須使用%hi
說明符代替%d
。
因此您的代碼必須是:
#include <stdio.h>
int main() {
short x , y , z ;
printf("Please Enter three int Numbers ! ");
scanf("%hi %hi %hi",&x,&y,&z);
printf("\n num1 = %hi , num2 = %hi , num3 = %hi ",x,y,z);
return 0;
}
您可以在此處找到有關C
數據類型及其說明符的更多信息: https : //en.wikipedia.org/wiki/C_data_types
簡短的!= int
您將指針傳遞到(通常為2個字節)數據,然后scanf期望並寫入4個字節
改變short x , y , z ;
int x , y , z ;
一如既往的scanf不是越野車,但編碼器是:)
PS忘記添加。 您還可以使用h
格式修飾符。 如果您要掃描字符大小的變量,也有hh
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.