#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);
           ~~~~~~~~~~~~~~~~  ^



为什么编译器假设我要加倍?
这就是为什么大于10的数字会导致字母转换的原因吗?


谢谢

最佳答案

您要printf()将数字表示为hexadecimal

尝试使用%d%i代替%x。这会将它们显示为十进制数字。

07-24 09:51