user-0 提问: printf里有printf这什么意思

回复:
user: user-1
content: 引用 10 楼 zy_dream 的回复: 貌似有些理解懂了 待我好好的在品味下 最后 我打字有时不仔细啊，有些急年轻人气血旺盛 要注意 关于自己是否适合编程的很简单的测试： 在报纸或杂志上随便找一段约1000字的文章，在Word中输入一遍。输完后再参考下面答案：  A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样，且自我感觉很有成就感  A不适合编程（理由：打字准确度偏低、粗心大意） B初级程序员（理由：打字准确度很高、认真细致、自信、理解全角半角概念） C高级程序员（理由：在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证） D软件项目经理（理由：能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业！）  如果想从A变成B的话，到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”

user: user-0
content: 貌似有些理解懂了 待我好好的在品味下 最后 我打字有时不仔细啊，有些急年轻人气血旺盛 要注意

user: user-2
content: 今天怎么回事，各种邀请回答问题的提示呢？什么时候开的这个功能，还是CSDN推送的！  1. 我给你的的代码稍微修改了一下，试试这样输出试试  printf("%d\n", printf("%d\n", printf("%s\n",str1)));   2.  另用man 3 printf 看看 printf的返回值。  Upon  successful  return,  these functions return the number of characters printed (not including the trailing ’\0’ used to end        output to strings).   总结，这个问题不但告诉我们printf返回值的问题，还告诉我们了printf嵌套时候的中的执行顺序。

user: user-3
content: 引用 7 楼 zy_dream 的回复:[quote=引用 4 楼 sholber 的回复:] printf ("%d\n", printf ("%d\n", printf ("%d\n", printf ("%d\n", 8)))); 8 2 2 2 2 好吧 只输入了一个8 返回值补应该是8吗 为什么都是2了 printf整体也是算一次的吗？那这样想依次往外返回值应该是递加的吧[/quote]  据说printf的返回值是它所输出的字符数。但是不要忘了，"%d\n"这个控制串，不但含有要输出的数字，还有一个换行符\n，这也算一个被输出的字符哇。 哇哇嘎嘎~~~

user: user-0
content: 引用 4 楼 sholber 的回复:printf ("%d\n", printf ("%d\n", printf ("%d\n", printf ("%d\n", 8)))); 8 2 2 2 2 好吧 只输入了一个8 返回值补应该是8吗 为什么都是2了 printf整体也是算一次的吗？那这样想依次往外返回值应该是递加的吧

user: user-0
content: 引用 4 楼 sholber 的回复:printf ("%d\n", printf ("%d\n", printf ("%d\n", printf ("%d\n", 8)))); 又是前辈您啊让我好好感悟吧

user: user-0
content: 引用 2 楼 zhangxiangDavaid 的回复:printf()的返回值就是打印的字符个数。 语句 printf("   %d\n",printf("%s",str1)); 首先， printf("%s",str1);打印出str1,返回值是9 接着 printf(" %d", 9);  打印9  谢谢，原来是这样

user: user-3
content: printf ("%d\n", printf ("%d\n", printf ("%d\n", printf ("%d\n", 8))));

user: user-1
content: printf, wprintf Print formatted output to the standard output stream.  int printf( const char *format [, argument]... );  int wprintf( const wchar_t *format [, argument]... );  Routine Required Header Compatibility  printf <stdio.h> ANSI, Win 95, Win NT  wprintf <stdio.h> or <wchar.h> ANSI, Win 95, Win NT    For additional compatibility information, see Compatibility in the Introduction.  Libraries  LIBC.LIB Single thread static library, retail version  LIBCMT.LIB Multithread static library, retail version  MSVCRT.LIB Import library for MSVCRT.DLL, retail version    Return Value  Each of these functions returns the number of characters printed, or a negative value if an error occurs.  Parameters  format  Format control  argument  Optional arguments  Remarks  The printf function formats and prints a series of characters and values to the standard output stream, stdout. If arguments follow the format string, the format string must contain specifications that determine the output format for the arguments. printf and fprintf behave identically except that printf writes output to stdout rather than to a destination of type FILE.  wprintf is a wide-character version of printf; format is a wide-character string. wprintf and printf behave identically otherwise.   Generic-Text Routine Mappings  TCHAR.H Routine  _UNICODE & _MBCS Not Defined _MBCS Defined _UNICODE Defined  _tprintf printf printf wprintf    The format argument consists of ordinary characters, escape sequences, and (if arguments follow format) format specifications. The ordinary characters and escape sequences are copied to stdout in order of their appearance. For example, the line  printf("Line one\n\t\tLine two\n");   produces the output  Line one         Line two  Format specifications always begin with a percent sign (%) and are read left to right. When printf encounters the first format specification (if any), it converts the value of the first argument after format and outputs it accordingly. The second format specification causes the second argument to be converted and output, and so on. If there are more arguments than there are format specifications, the extra arguments are ignored. The results are undefined if there are not enough arguments for all the format specifications.  Example  /* PRINTF.C: This program uses the printf and wprintf functions  * to produce formatted output.  */  #include <stdio.h>  void main( void ) {    char   ch = 'h', *string = "computer";    int    count = -9234;    double fp = 251.7366;    wchar_t wch = L'w', *wstring = L"Unicode";     /* Display integers. */    printf( "Integer formats:\n"            "\tDecimal: %d  Justified: %.6d  Unsigned: %u\n",            count, count, count, count );     printf( "Decimal %d as:\n\tHex: %Xh  C hex: 0x%x  Octal: %o\n",             count, count, count, count );     /* Display in different radixes. */    printf( "Digits 10 equal:\n\tHex: %i  Octal: %i  Decimal: %i\n",             0x10, 010, 10 );     /* Display characters. */     printf("Characters in field (1):\n%10c%5hc%5C%5lc\n", ch, ch, wch, wch);    wprintf(L"Characters in field (2):\n%10C%5hc%5c%5lc\n", ch, ch, wch, wch);     /* Display strings. */     printf("Strings in field (1):\n%25s\n%25.4hs\n\t%S%25.3ls\n",    string, string, wstring, wstring);    wprintf(L"Strings in field (2):\n%25S\n%25.4hs\n\t%s%25.3ls\n",        string, string, wstring, wstring);     /* Display real numbers. */    printf( "Real numbers:\n\t%f %.2f %e %E\n", fp, fp, fp, fp );     /* Display pointer. */    printf( "\nAddress as:\t%p\n", &count);     /* Count characters printed. */    printf( "\nDisplay to here:\n" );    printf( "1234567890123456%n78901234567890\n", &count );    printf( "\tNumber displayed: %d\n\n", count ); }   Output  Integer formats:    Decimal: -9234  Justified: -009234  Unsigned: 4294958062 Decimal -9234 as:    Hex: FFFFDBEEh  C hex: 0xffffdbee  Octal: 37777755756 Digits 10 equal:    Hex: 16  Octal: 8  Decimal: 10 Characters in field (1):          h    h    w    w Characters in field (2):          h    h    w    w Strings in field (1):                  computer                      comp    Unicode                      Uni Strings in field (2):                  computer                      comp    Unicode                      Uni Real numbers:    251.736600 251.74 2.517366e+002 2.517366E+002  Address as:   0012FFAC  Display to here: 123456789012345678901234567890    Number displayed: 16   Floating-Point Support Routines |  Stream I/O Routines |  Locale Routines  See Also   fopen, fprintf, scanf, sprintf, vprintf Functions

user: user-4
content: printf()的返回值就是打印的字符个数。 语句 printf("   %d\n",printf("%s",str1)); 首先， printf("%s",str1);打印出str1,返回值是9 接着 printf(" %d", 9);  打印9

user: user-0
content: #include<string.h> #include<stdio.h> int main() { 	char *str1="WelcomeTo\0XiyouLinux\n"; 	char str2[]="WelcomeTo\0XiyouLinux\n"; 	printf("%d\n",printf("%s",str1)); 	printf("%ld,%ld\n",strlen(str1),strlen(str2)); 	printf("%lu,%lu\n",sizeof(str1),sizeof(str2)); 	return 0; }  完整的代码是这样的 自己是在ubuntu下的 用gdb简单的调试看看 因为是初学者 所以见谅