如果声明和顺序执行

时间:2013-06-25 00:26:30

标签: c if-statement

我有一个非常短(并且很多菜鸟)的问题。我有一个功能,包括:

void function(int x)
{
    x = 3;
    if (x == 4)
        printf("HI!");
    x = 4;
}

是否会打印HI!字样?换句话说,C程序是否顺序读取?

非常感谢!

2 个答案:

答案 0 :(得分:1)

不,代码编译成一系列指令,这些指令一个接一个地顺序发生。与4的比较将始终在作业x = 4之前。所以这将是错误的。

当您处理单个线程时,可以保证这种类型的顺序。当你有多个线程时,你会得到奇怪的结果和竞争条件,除非你小心。

答案 1 :(得分:0)

不会打印。上面的那一行当然很重要。