17题,为啥返回值是一和’o’等价,不应该和1是等价的嘛,能否详细说一下

img

img

到底问16还是17题啊?17题选项没全部提供啊
16题while语句printf语句能正确输出*号,那么返回值就是1,表示成功输出一个字符。对于if语句来说,只有0和非0两种。即0为假,非0为真。所以printf语句返回1,和if('0')是一个效果,因为字符'0'的ASCII码不是0,所以都是真,可以看做等价

C语言中非0即真
'0' 跟 1都非零 都代表真