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

问题描述 投票:1回答:1

我写了下面的代码,收到了一个 空白输出:

int main(){

    int y=0;

    printf("%.d", y);

    return 0;
}

相反,如果我只用 %d,我得到 0 作为输出。

这两者之间有什么区别呢?%d%.d.

非常感谢您的建议

c++ c format-specifiers
1个回答
5
投票

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.

© www.soinside.com 2019 - 2024. All rights reserved.