求解一道C语言的题目

设有程序段:t=0;while(printf("*")){t++;if(t<3)break;}答案说其中的循环控制表达式与‘0’等价,可是我怎么都弄不明白为什么,希望大家... 设有程序段:
t=0;
while(printf("*"))
{
t++;
if(t<3)break;
}
答案说其中的循环控制表达式与‘0’等价,可是我怎么都弄不明白为什么,希望大家给我一个满意的回答~
展开
 我来答
kevinzhuy
2010-01-28 · TA获得超过106个赞
知道答主
回答量:35
采纳率:0%
帮助的人:0
展开全部
好吧,你的答案是有问题的

printf()函数的返回值是它输出的字符的个数,在这里printf("*")的返回值为1,因此while循环是等同于while(1)的

你的t初始化为0,进入while循环以后即使执行了t++,t也只是等于1,因此满足if的条件break出while循环,总共只循环了一次。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
davidrin
2010-01-28 · TA获得超过1792个赞
知道小有建树答主
回答量:718
采纳率:100%
帮助的人:883万
展开全部
printf("*")函数返回值应该是实际打印的字符数,即1,作为逻辑TRUE处理;
字符 '0' ASCII码 65,也作为TRUE处理。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式