2013-11-25 2 views
-5

В настоящее время я изучаю C, и у меня возникают проблемы с этим утверждением if.Если оператор C не работает правильно

Вот код, который я до сих пор:

#include <stdio.h> 

int main() 
{ 
    int age = 18; 
    int ageToVote = 18; 

    if(age >= ageToVote) 
    return 0; 
    { 
     printf("You are old enough to vote.\n"); 
    } 
} 

Мне сказали, что приведенный выше код должен дать мне выход: Вы достаточно стар, чтобы голосовать.

Но по какой-то причине он только даст мне этот вывод, когда я меняю int age = 18 к int age = 17, или любое другое число ниже, чем 18.

Это obviosuly не имеет смысла, так как код говорит, что если возраст больше или равным значению agetovote 18, тогда выход должен быть вы достаточно стары, чтобы голосовать.

Любые идеи, почему он отображает правильный результат, когда математика неверна?

+0

Тело вашего if - это 'return 0;' не следующее '{...}', это действительно основная функция * C *. –

+0

Мне очень нравятся эти вопросы «Не работает рабочий язык ядра XY» ... конечно, компилятор/язык неисправен ...>. < –

ответ

3

Это потому, что составной оператор

{ 
    printf("You are old enough to vote.\n"); 
} 

никогда не получают казнены. Удалить return 0; после if заявление.

if(age >= ageToVote) 
{ 
    printf("You are old enough to vote.\n"); 
} 
+0

Если у вас было условие 'else', у вас была бы ошибка компиляции ... –

+0

Я думаю, что возвращаемое значение все еще дает мне проблемы. – user3006448

+0

Какая проблема? Любая ошибка или что-то еще? – haccks

1

Правильный код:

#include <stdio.h> 

int main() 
{ 
    int age = 18; 
    int ageToVote = 18; 

    if(age >= ageToVote) 
    { 
     printf("You are old enough to vote.\n"); 
    } 

    return 0; 
} 
0

Это составляет:

if(18 >= 18) 
    return 0; 

Из конечно18 >= 18, так что, конечно он немедленно возвращается.

Мне сказали, что приведенный выше код должен дать мне вывод: вы достаточно взрослые, чтобы голосовать.

Тот, кто вам сказал, что это неверно. Ключевое слово return заставляет функцию немедленно выйти.

0

возвращение 0; должно быть последним утверждением в вашем методе.

Если вы положили return 0; после IF и до {} вы выполните это, и вы проигнорируете инструкцию останова.

Смежные вопросы