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条件为假)
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'等价 可否把上下文打上来。。只单看这一句是肯定不对的
TA贡献1817条经验 获得超14个赞
//经测试,下面两个程序运行结果等价,printf("*")与 '1'等价。
#include<stdio.h>
void main()
{while(printf("*"));
}
#include<stdio.h>
void main()
{while(1)printf("*");
}
TA贡献1816条经验 获得超4个赞
printf() -- 如果打印成功 返回 正数(打印出的字符数),打印失败 返回 负数。
printf("*") -- 如果打印成功,返回 1,while(printf("*"))将继续打印。
printf("*") -- 如果打印失败,返回 负数,不继续执行循环了。
- 4 回答
- 0 关注
- 533 浏览
添加回答
举报