我是 C 的新手,我很难理解两者之间的区别。有人可以同时使用两者的例子吗?如果我错了,请纠正我的逻辑,但这是我理解以下内容的方式:
int a = 10;
printf("%d\n", a);
%d
的作用是通知编译器我们要打印的变量是int类型。至少,到目前为止我是这么想的。谢谢。
最佳答案
在像 %ld
这样的格式字符串中,字母 l
将是长度修饰符,它向标准库函数(而不是编译器)指示您想要关联参数被解释为 long int
。有一个方便的图表显示了各种长度/转换字符组合的标准解释 here on cplusplus.com .
编译器在编译时知道所有变量的类型,但 printf
函数无法在运行时确定参数的类型,因为可变参数函数的工作方式。您可以自己进行实验,看看对于传递给 printf
的相同数据,长度修饰符和转换说明符的不同组合如何产生完全不同的结果。
关于c - C 中的长度修饰符与转换说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28948446/