2013-11-25 84 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 = 18int age = 17,或任何其他數量低於18

這是因爲代碼說,如果年齡大於obviosuly沒有意義或者等於18的agetovote值,那麼輸出結果應該是你足夠大以便投票。

任何想法爲什麼它顯示正確的輸出時,數學是不正確的?

+0

你的if的主體是'return 0;'不是下面的'{...}',這是* C *的一個基本特徵。 –

+0

我喜歡這些「XY核心語言功能不工作」的問題......當然編譯器/語言錯誤...>< – 2013-11-25 19:26:49

回答

3

這是因爲複合語句

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

從來沒有得到執行。在if聲明後刪除return 0;

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

return 0;必須是您方法中的最後一個陳述。

如果你把返回0;在IF之後,{}你執行該操作之後,你將忽略剩餘聲明。