2013-06-25 2 views
1

У меня очень короткий вопрос (и довольно много). У меня есть функция, которая включает в себя:Если инструкция и последовательное выполнение

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

Будет ли слово HI! быть напечатано? Другими словами, программа C читается последовательно или нет?

Большое спасибо!

+8

Почему вы не компилируете это и не видите сами? –

+4

Нет, это не будет ... – jeremy

+3

C - это процедурный язык; блоки кода выполняются сверху вниз, последовательно. –

ответ

1

Нет, код компилируется в последовательность инструкций, которые последовательно выполняются один за другим. Сравнение с 4 всегда будет перед назначением x = 4. Так что это будет ложь.

Этот тип заказа гарантирован, если вы имеете дело с одной нитью. Когда у вас есть несколько потоков, вы можете получить странные результаты и условия гонки, если не будете осторожны.

0

Не печатается. Строка выше - это то, что важно.