0
#include <stdio.h>
int main ()
{ 
   int c;
   printf ("the value of %nc :  
   ", &c);

   return 0;
}

输出:值 0

4

2 回答 2

4

根据 C 2018 7.21.6.1 8,对于转换说明符n

参数应该是一个指向有符号整数的指针,其中写入了到目前为止通过此调用fprintf[or printf] 写入输出流的字符数。...</p>

因此, 的效果printf ("the value of %nc : ", &c);是将字符“c 的值:”写入输出,并将字符数放入“c 的值”中c,即 13。

于 2020-01-10T15:19:45.793 回答
2

对于初学者,您不能使用中间换行符拆分字符串文字。所以这个电话

   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
于 2020-01-10T15:36:38.347 回答