C编程语言中没有boolean
类型,但是C语言如何将IF/Else
转为true和false?
幕后发生了什么?
答案 0 :(得分:6)
在决定应该采用if
/ else
语句的哪个分支之前,编译器不会将条件表达式转换为布尔值。相反,它会生成汇编程序指令,就像您在汇编程序中编写程序一样。
一个简单的例子:
if (x > y)
{
// Do something
}
else
{
// Do something else
}
可以翻译成(使用虚构的微控制器):
CMP R12,R13
BLE label1
// Do something
JMP label2
label1:
// Do something else
label2:
如果条件更简单,如:
if (x)
如果C语言非零,那么C语言将认为x
为 true ,否则 false 。
如果条件包含||
和/或&&
运算符,编译器将生成使测试短路的代码。换句话说,对于表达式x != 0 && a/x == y
,如果第一个测试不为真,则甚至不会执行第二个测试。在这种情况下,这用于确保不执行除零。
答案 1 :(得分:4)
CPU没有 true 和 false :仅0
和1
。
基本上,在C:
答案 2 :(得分:1)
对于条件,非零值等于true,零值等于false。