while(printf("*"))是什么意思?

相当于 while(1){printf("*");} 然后 一直输出星号对么?
书上说 while(printf("*"))中的printf("*")与 '0’等价 0不就是假了么 不就不执行循环了么
初学者 帮帮忙 详细解释下

缥缈止盈
浏览 537回答 4
4回答

交互式爱情

while(printf("*"))  表示打印*成功,则继续执行while循环体中的内容,否则跳出while循环。理解while(printf("*")),关键是要知道printf函数的返回值是什么。printf函数的返回值是打印字符的个数,如:int a = printf("%d", 123);  printf("%d", a);  // 输出3,因为打印123是三个字符根据printf函数的返回值,不难理解while(printf("*")) ,如果打印成功,即返回1(while条件为真),否则返回0(while条件为假)

Cats萌萌

int printf( const char *format [, argument]... );这是printf的函数声明原型 说明[printf是有返回值的Return ValueEach of these functions returns the number of characters printed, or a negative value if an error occurs返回值就是输出字符的个数或者一个整型的错误值所以实际上printf("*")的值是1 至于你说的书上那个说法 printf("*")与'0'等价 可否把上下文打上来。。只单看这一句是肯定不对的

大话西游666

//经测试,下面两个程序运行结果等价,printf("*")与 '1'等价。#include<stdio.h>void main(){while(printf("*"));}#include<stdio.h>void main(){while(1)printf("*");}

繁华开满天机

printf() -- 如果打印成功 返回 正数(打印出的字符数),打印失败 返回 负数。printf("*") -- 如果打印成功,返回 1,while(printf("*"))将继续打印。printf("*") -- 如果打印失败,返回 负数,不继续执行循环了。
打开App,查看更多内容
随时随地看视频慕课网APP