这个问题怎么回答,另外可以讲一讲循环控制表达式的其他情况和意义吗,十分感谢

img

printf()函数的副作用是显示信息,主作用是返回待显示字符的个数,所以printf("")这个表达式会返回值1,所以该测试条件一直为真。如果你把if语句删去的话,你运行后就会看到一个不断打印的死循环。所以,正确的说法是:其中循环控制表达式与1等价。而B选项中,'0'代表的是0字符,它的ASCII码是48,而一切非零数字在C语言中都被看作是“真(1)”,所以B选项是对的。

printf是个函数
它有返回值
返回值就是传入的字符串的长度
那么本题明显返回值应该是3,两个空格一个星一共3个字符
所以本题代码等价于:
printf(" * ");
while(3) { }
所以你知道答案应该选什么了吗

printf的返回值是里面的字符串的长度
所以现在,循环控制表达式里面应该是1
所以应该选D。
但是,换一种说法的话,
while的循环控制表达式结果应该是个bool型的
所以它应该是 (bool)1 就是true
B答案里面'0'结果也是true
在这个角度上来说,B也说得通
就是不知道题目想问什么了