C:声明"返回A ||" 当A> 1时,1'返回?

Rog*_*ger 3 c objective-c

虽然我不会自己编写,但以下语句的预期结果是什么A(保证为零或正整数)大于1?

return A || 1;

在许多语言中,我希望A返回,除非值A为零,在这种情况下1将是.

我没有拿到我的C书,但我注意到实际上,价值1似乎总是被退回.这是编译器优化的结果还是给出了表达式的潜在歧义,是否返回值是非确定性的?

Yuj*_*uji 18

标准说

||操作人员应得到1如果任一操作数的比较不等于0; 否则,它产生0.结果类型为int.

标准 6.5.14节.