我写了下面的代码,收到了一个 空白输出:
int main(){
int y=0;
printf("%.d", y);
return 0;
}
相反,如果我只用 %d
,我得到 0
作为输出。
这两者之间有什么区别呢?%d
和 %.d
.
非常感谢您的建议
A .
前的转换指定符称为 "精度"。从 printf man page (强调是我的)。
一个可选的精度,形式为句号('.'),后面是一个可选的小数位字符串。我们可以写 "*"或 "*m$"(对于某些小数整数m)来代替小数位字符串,以指定精度分别在下一个参数或m-th参数中给出,这些参数的类型必须是int。如果精度只给出'.,或者精度为负数。的精度为零。这给出了d、i、o、u、x和X转换时出现的最小位数。,
和
d, i
int参数被转换为有符号的十进制符号。精度(如果有的话)给出了必须出现的最小数字;如果转换后的值需要更少的数字,则在左边用0填充。默认精度为1。当打印0时,显式精度为0,输出为空。
所以对于这个例子的代码。%.d
是指零精度的整数转换。零精度意味着最小的零位数。由于要转换的值是 0
由于精度为零,根本不显示。与此相反。%d
没有明确的精度,因此默认为精度为1,结果打印为 0
.