這是我在解決書籍問題時提出的代碼,其中我被要求編寫一個程序以12小時格式獲取輸入並以24小時格式輸出。這個C程序爲什麼工作? (字符類型相關的查詢)
有效的輸入爲例如下午1點11,1:11P,1點11分,1:11P,1點11分,1點11 P,下午1點11,1點11 P
這裏是代碼:
#include<stdio.h>
int main (void)
{
int hr=0,min=0; char time;
scanf("%d : %d %c", &hr, &min, &time);
if(time =='p' || time == 'P' || time == 'PM' || time == 'pm' && hr >= 12)
{
hr +=12;
}
printf("The 24 hour format time is = %d : %d", hr, min);
printf("% Test result = c", test);
return 0;
}
在if條件我寫道:
if(time =='p' || time == 'P' || time == 'PM' || time == 'pm' && hr >= 12)
據我所知字符類型僅允許存儲1個字符。那麼爲什麼這個工作,當我給這樣的輸入9:11 PM。它是如何工作的這種情況?
time == 'pm' || time == 'PM'
輸出爲:
The 24 hour format time is =21:11
編輯1:
GNU GCC編譯器被使用。代碼位於單個文件中,不在項目中。
你使用什麼編譯器?你在編譯什麼系統,並且(交叉編譯時主機和目標可能不同)?你給了什麼選擇?你是否啓用了所有的警告和調試信息? –
您忘記啓用編譯警告。如果你這樣做了,編譯器會警告你試圖使用「多字符常量」。 – pmg
可能的重複[在多個字符上使用C++時單引號做什麼?](http://stackoverflow.com/questions/7459939/what-do-single-quotes-do-in-c-when-used-多個字符) – pb2q