簡體   English   中英

為什么 C 代碼將大於 10 的數字作為字母返回?

[英]Why does C code return numbers greater than 10 as letters?

#include <stdio.h>
int main(void)
{

    int mins = 10;
    int formu = 6 * mins;

    printf("Input: %x\n", mins);
    printf("Result: %x\n", formu);
}

結果如下:

Input: a
Result: 3c

我相信出於某種原因,其中一種類型(如果不是兩種)被生成為“Double”並且放入“Int”會導致沖突。當我將“%x”中的任何一個更改為“mins”或“formu”我收到以下錯誤:

error: data argument not used by format string [-Werror,-Wformat-extra-args]
    printf("Input: %mins\n", mins);
           ~~~~~~~~~~~~~~~~  ^
  • 為什么編譯器假設我想要一個double?
  • 這就是大於 10 的數字導致字母轉換的原因嗎?

謝謝

x%x是一個十六進制格式說明和a是10十六進制的。 這與雙打無關。 如果要打印十進制數,請使用%d

printf("Input: %d\n", mins);

有關格式說明符的更多詳細信息,另請參閱printf 文檔

%x格式說明符告訴printf以十六進制輸出給定的整數值。

如果您希望輸出為十進制,請使用%d

此外,您需要確保每個格式說明符都有一個正確類型的參數。 所以%d%x和 %u require an int , while %f required a double`。 使用錯誤的格式說明符會導致未定義的行為

有關更多詳細信息,請參閱printf的手冊頁

您要求printf()將數字表示為hexadecimal

嘗試使用%d%i而不是%x 這會將它們顯示為十進制數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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