类型转换语法不清楚

时间:2011-03-24 09:17:22

标签: c casting printf

我正在读一本书并遇到一个程序来读取/proc文件中的条目。 他们提到的程序有以下几行

printf("%.*s", (int) n, line);

我不清楚上面一行的含义

  1. 如果使用"%.*s而不是%s
  2. ,则打印的是什么类型的打印件

    可以阅读代码here

2 个答案:

答案 0 :(得分:6)

摘自here

  

。* - 未指定精度   格式字符串,但作为   附加整数值参数   必须在参数之前   格式化。

因此,这会从行字符串中打印最多n个字符。

答案 1 :(得分:0)

强制转换表达式(int)n将n的值转换为int类型。这是因为格式化说明符需要普通的int,并且我假设(因为您没有包含它)变量n具有不同的类型。

由于size_t之类的其他类型可能具有其他大小,因此如果未将printf()显式转换为int,则会将参数传递给{{1}}。