为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C C#
缥缈止盈 2022-07-26 19:15:23
相当于 while(1){printf("*");} 然后 一直输出星号对么?书上说 while(printf("*"))中的printf("*")与 '0’等价 0不就是假了么 不就不执行循环了么初学者 帮帮忙 详细解释下
查看完整描述

4 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

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条件为假)


查看完整回答
反对 回复 2022-08-01
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

int printf( const char *format [, argument]... );
这是printf的函数声明原型 说明[printf是有返回值的
Return Value

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


查看完整回答
反对 回复 2022-08-01
?
大话西游666

TA贡献1817条经验 获得超14个赞

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

#include<stdio.h>
void main()
{while(1)printf("*");
}


查看完整回答
反对 回复 2022-08-01
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

printf() -- 如果打印成功 返回 正数(打印出的字符数),打印失败 返回 负数。
printf("*") -- 如果打印成功,返回 1,while(printf("*"))将继续打印。
printf("*") -- 如果打印失败,返回 负数,不继续执行循环了。

查看完整回答
反对 回复 2022-08-01
  • 4 回答
  • 0 关注
  • 533 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信