我有一个非常短(并且很多菜鸟)的问题。我有一个功能,包括:
void function(int x)
{
x = 3;
if (x == 4)
printf("HI!");
x = 4;
}
是否会打印HI!
字样?换句话说,C程序是否顺序读取?
非常感谢!
答案 0 :(得分:1)
不,代码编译成一系列指令,这些指令一个接一个地顺序发生。与4
的比较将始终在作业x = 4
之前。所以这将是错误的。
当您处理单个线程时,可以保证这种类型的顺序。当你有多个线程时,你会得到奇怪的结果和竞争条件,除非你小心。
答案 1 :(得分:0)
不会打印。上面的那一行当然很重要。