【发布时间】:2023-03-13 07:13:01
【问题描述】:
我编写了以下代码并收到了空白输出:
int main(){
int y=0;
printf("%.d", y);
return 0;
}
相反,如果我只使用%d,我会得到0 作为输出。
%d 和 %.d 有什么区别。
非常感谢您的建议!
【问题讨论】:
标签: c format-specifiers
我编写了以下代码并收到了空白输出:
int main(){
int y=0;
printf("%.d", y);
return 0;
}
相反,如果我只使用%d,我会得到0 作为输出。
%d 和 %.d 有什么区别。
非常感谢您的建议!
【问题讨论】:
标签: c format-specifiers
转换说明符之前的. 称为“精度”。来自printf man page(强调我的):
可选精度,形式为句点 ('.'),后跟可选的十进制数字字符串。而不是十进制数字字符串,可以写“*”或“*m$”(对于一些十进制整数m)来指定精度分别在下一个参数或第m个参数中给出,这必须是int 类型。 如果精度只给出'.',或者精度为负,精度为零。这给出了 d、i、o、u、x 和 X 转换出现的最小位数,
和
d, 我
int 参数被转换为有符号十进制表示法。精度(如果有)给出了必须出现的最小位数;如果转换后的值需要较少的数字,则在左侧用零填充。 默认精度为1。当打印0时,显式精度为0,输出为空
所以对于示例代码,%.d 表示零精度的整数转换。零精度意味着最少零位数。由于要转换的值是0,由于零精度,它根本不显示。相比之下,%d 没有明确的精度,因此默认为 1 的精度,从而导致打印 0。
【讨论】: