以下代码的行为是什么?

时间:2016-04-18 17:12:35

标签: c

以下代码的行为是什么?

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语句时,我会评估elsestatus.channel不再是0.这是否意味着代码也会运行{{ 1}}陈述?

3 个答案:

答案 0 :(得分:4)

if else方案中,ifTrue且执行时,相应的else将不会执行。

即使if块内的语句改变了条件。

答案 1 :(得分:1)

ifif...elsenested if...else语句用于在C编程中做出一次性决策,即执行某些代码并忽略某些代码/ s在测试表达。

如果if语句的括号中的表达式求值为true,则else块将不会被执行。但是,如果if语句的括号中的表达式求值为false,则执行else部分的语句块并跳过if块。

您可以使用printf函数运行一些实验,以便了解c编程中的conditional statements

答案 2 :(得分:0)

在这种情况下不会运行else语句。