簡體   English   中英

帶有CodeBlocks IDE的C中的Scanf函數是否有錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM