作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
C语言中没有boolean
类型,那么C语言是如何将IF/Else
转为true和false的呢?
幕后发生了什么?
最佳答案
编译器在决定采用 if
/else
语句的哪个分支之前不会将条件表达式转换为 bool 值。相反,它会生成汇编程序指令,就像您用汇编程序编写程序时所编写的那样。
一个简单的例子:
if (x > y)
{
// Do something
}
else
{
// Do something else
}
可以翻译成(使用虚构的微 Controller ):
CMP R12,R13
BLE label1
// Do something
JMP label2
label1:
// Do something else
label2:
如果条件更简单,如:
if (x)
如果 x
非零,则 C 语言将其视为 true,否则为 false。
如果条件包含 ||
和/或 &&
运算符,编译器将生成使测试短路的代码。换句话说,对于表达式 x != 0 && a/x == y
,如果第一个测试不为真,则甚至不会执行第二个测试。在这种情况下,这用于确保不执行除以零。
关于c - C如何执行它的IF语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5603982/
我是一名优秀的程序员,十分优秀!