#include <stdio.h>
int main ()
{
int c;
printf ("the value of %nc :
", &c);
return 0;
}
输出:值 0
#include <stdio.h>
int main ()
{
int c;
printf ("the value of %nc :
", &c);
return 0;
}
输出:值 0
根据 C 2018 7.21.6.1 8,对于转换说明符n
:
参数应该是一个指向有符号整数的指针,其中写入了到目前为止通过此调用
fprintf
[orprintf
] 写入输出流的字符数。...</p>
因此, 的效果printf ("the value of %nc : ", &c);
是将字符“c 的值:”写入输出,并将字符数放入“c 的值”中c
,即 13。
对于初学者,您不能使用中间换行符拆分字符串文字。所以这个电话
printf ("the value of %nc :
", &c);
在语法上无效。要么写
printf ("the value of %nc : \n ", &c);
或写
printf ("the value of %nc : \n"
"", &c);
在上面的调用中,函数printf
不输出变量c
本身的值。您需要额外调用函数printf
来输出变量的值c
。
如果您想在一行中执行此操作,则可以按照下面的演示程序中所示编写。
#include <stdio.h>
int main(void)
{
int c;
printf( "%d\n", ( printf ("the value of %nc : ", &c ), c ) );
return 0;
}
程序输出为
the value of c : 13
或者,如果您想在输出的字符串文字中包含换行符,您可以printf
通过以下方式重写调用 pf
printf( "%d\n", ( printf ("the value of %nc : \n ", &c ), c ) );
在这种情况下,程序输出看起来像
the value of c :
13