所以我有这个代码
double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
printf("%d", balance[0]);
所以我希望打印出数组的第一个元素,即1000.0。但是,由于某些奇怪的原因,它会继续打印0。任何人都知道为什么??
答案 0 :(得分:4)
来自C11草案
<强>§7.16.1.1/ 2 强>
...if type is not compatible with the type of the actual next argument
(as promoted according to the default argument promotions), the behavior
is undefined, ....
您需要使用正确的格式说明符来打印变量值。
答案 1 :(得分:1)
您正在使用signed int
的格式说明符打印double
使用此 -
printf("%f", balance[0]);
答案 2 :(得分:1)
要打印double
,请使用%f
:
printf("%f", balance[0]);
您可能会感到困惑,%d
中的 d 表示 double ,但实际上它意味着十进制。
答案 3 :(得分:1)
要打印您无法使用%d
的双值,您应该使用%f
。
double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
printf("%f", balance[0]);
答案 4 :(得分:0)
使用%f代替%d。您也可以用float替换double。
浮动余额[5] = {1000.0,2.0,3.4,17.0,50.0};
printf(“%f”,balance [0])
答案 5 :(得分:0)
您在代码中的printf语句中使用了错误的格式说明符。您正在尝试使用%d格式说明符打印浮点值,这会导致意外输出。
使用%f 代替%d ,一切都会好的,如下所示:
double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
printf("%f", balance[0]);
输出
1000.000000