#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
我相信由于某种原因,其中一种类型(如果不是两种)都被生成为“双”并且放入“Int”会导致冲突。当我将“%x”中的任何一个更改为“分钟“或”formu“我收到以下错误:
error: data argument not used by format string [-Werror,-Wformat-extra-args]
printf("Input: %mins\n", mins);
~~~~~~~~~~~~~~~~ ^
由于
答案 0 :(得分:2)
x
中的{p> %x
是hexadecimal格式说明符,a
是十六进制的10。这与双打毫无关系。如果要打印十进制数,请使用%d
:
printf("Input: %d\n", mins);
有关格式说明符的详细信息,另请参阅printf documentation。
答案 1 :(得分:2)
%x
格式说明符告诉printf
以十六进制输出给定的整数值。
如果您希望输出为十进制,请使用%d
。
此外,您需要确保为每个格式说明符指定正确类型的参数。所以%d
,%x
和%u require an
int , while
%f required a
double`。使用错误的格式说明符会导致undefined behavior。
有关详细信息,请参阅printf
的手册页答案 2 :(得分:1)
您要求printf()
将数字表示为hexadecimal。
尝试使用%d
或%i
代替%x
。这将显示为十进制数字。