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