这题!!
[题5.7]设有程序段:t=0;
while (printf(" *"))
{ t++;
if(t<3) break;}
A)其中循环控制表达式与0等价
B) 其中循环控制表达式与'0'等价
C)其中循环控制表达式是不合法的
D)以上说法都不对
为什么答案选B,printf不是有返回值1? '0' 的 ACSII 码 是 48,不是 0 。
个人理解 printf(" *") 打印* ,*对应的acsll码大于0,对于while来说 大于0就是1
答案B) 其中循环控制表达式与'0'等价
‘0’的acsll嘛也大于0
所以等价 ①printf的返回值根据其打印的字符来决定的,printf("*"); 返回值为1, while(printf("*");) == while(1) 等价于while(true)
②'0'的ascii码值为48 , while('0') == while(48) 等价于 while(true)
③因此while(printf("*");) 等价于 while('0') ‘0’的值可不是0哦。它是个字符。只要不是0,while就继续。所有不是0的数字都与1是等价的。都相等。
页:
[1]