C语言中%d和%.d之间的区别

时间:2020-05-04 11:08:53

标签: c format-specifiers

我编写了以下代码,并收到了空白输出

int main(){

    int y=0;

    printf("%.d", y);

    return 0;
}

相反,如果我仅使用%d,则会得到0作为输出。

%d%.d有什么区别。

非常感谢您的建议!

1 个答案:

答案 0 :(得分:5)

转换说明符之前的.被称为“精度”。来自printf man page(重点是我):

可选的精度,以句点('。')的形式,后跟可选的十进制数字字符串。代替十进制数字字符串,可以写“ *”或“ * m $”(对于某些十进​​制整数m)来指定精度分别在下一个参数或第m个参数中给出。类型为int。 如果精度仅给出'。',或者精度为负数,则精度将为零。这给出了d,i,o,u,x和X转换出现的最小位数

d,我

int参数将转换为带符号的十进制表示法。精度(如果有的话)给出了必须出现的最小位数。如果转换后的值需要较少的数字,则在左边用零填充。 默认精度为1。当以明确精度0打印0时,输出为空

因此对于示例代码,%.d表示精度为零的整数转换。零精度表示最少为零位数。由于要转换的值为0,因此由于零精度而根本不显示。相反,%d没有明确的精度,因此默认为1的精度,从而导致打印0

相关问题