以下代码的行为是什么?
status.channel = 0;
void a(void)
{
status.channel++;
}
void handler(void)
{
if (status.channel == 0) {
// do a
a();
} else {
// do b
}
}
在开始status.channel = 0
时,if
语句有效。然后在例程中,status.channel
递增,所以它等于1.
我的问题是,当我退出if
语句时,我会评估else
:status.channel
不再是0.这是否意味着代码也会运行{{ 1}}陈述?
答案 0 :(得分:4)
在if else
方案中,if
为True
且执行时,相应的else
将不会执行。
即使if
块内的语句改变了条件。
答案 1 :(得分:1)
if
,if...else
和nested if...else
语句用于在C编程中做出一次性决策,即执行某些代码并忽略某些代码/ s在测试表达。
如果if语句的括号中的表达式求值为true
,则else
块将不会被执行。但是,如果if
语句的括号中的表达式求值为false
,则执行else
部分的语句块并跳过if
块。
您可以使用printf
函数运行一些实验,以便了解c编程中的conditional statements
。
答案 2 :(得分:0)
在这种情况下不会运行else语句。