c - C 中的长度修饰符与转换说明符

标签 c

我是 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/

相关文章:

c - 使用 gcc 预处理器制作余弦表

c - 在c中写入或读取二进制文件的概率

c - 如何在 C 中将整数转换为数字数组?

c - 试图更好地理解 C 大小

c - 与 EOF 比较时对字符类型使用 int

c - 如何从gdb的 "info symbol"命令获取确切位置

我可以更改另一个 c 文件中符号(函数)的属性吗?

c - 无法理解 C 中的文件范围

c - GDB 打印 char 数组中的所有值

python ctypes,试图找到库名称