C如何执行其IF语句?

时间:2011-04-09 08:57:59

标签: c compiler-construction

C编程语言中没有boolean类型,但是C语言如何将IF/Else转为true和false?

幕后发生了什么?

3 个答案:

答案 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 :仅01

基本上,在C:

  • 虚假的东西等于0-- CPU可以测试
  • 这是真的不等于0 - 这也是CPU可以测试的东西。

答案 2 :(得分:1)

对于条件,非零值等于true,零值等于false。