2014-02-24 75 views
-2

我正在創建一個程序來測量日期之間的經過時間。我寫了幾個if語句來拋出錯誤信息並結束程序。如果陳述不工作在C

例如

if (monthOne == 2 && dayOne > 28) { 
    printf("Invalid date.\n") 
    return 0; } 

我也有if語句有類似的值設置像這樣的類似條件執行。

if (monthOne == 4 || 6 || 9 || 11 && dayOne > 30) 

然而,我總是得到我的無效日期消息返回,程序結束。我做錯什麼了嗎?

+0

二'if'是怎麼樣的凌亂不是嗎? –

+4

「||」運算符不能像那樣工作! –

+0

'monthOne'和'dayOne'是什麼類型? – harald

回答

2

在第一個if之後printf後面加分號。

printf("Invalid date.\n"); 

更改你的第二個if

if((monthOne == 4 || monthOne == 6 || monthOne == 9 || monthOne == 11) && dayOne > 30) 
3

你應該改變你的第二個if這樣:

if ((monthOne == 4 || monthOne == 6 || monthOne == 9 || monthOne == 11) && dayOne > 30) 

評估monthOne == 4 || 6永遠是正確的,因爲6是不同於0,其餘的表達是「短路」(未評估)。您還需要使用一組額外的括號,因爲&&||相比具有更高的優先級。