0

これは、12時間形式で入力を取得し、24時間形式で出力を提供するプログラムを作成するように依頼された、本の問題を解決するときに思いついたコードです。

有効な入力は、たとえば1:11 PM、1:11P、1:11pm、1:11p、1:11 pm、1:11 p、1:11 PM、1:11Pです。

コードは次のとおりです。

#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)

私の知る限り、charタイプは1文字しか格納できません。では、この午後9時11分にこのような入力を行うと、なぜこれが機能するのでしょうか。この状態ではどのように機能しましたか?

time == 'pm' || time == 'PM'

出力は次のとおりです。

The 24 hour format time is =21:11

編集1:

GNUGCCコンパイラが使用されます。コードはプロジェクトではなく単一のファイルにあります。

4

1 に答える 1

4

警告がなくても(または少なくとも取得する必要があります)time == 'P'、trueと評価される条件があり、完了です。

また、すべてのorをで囲む必要があることに注意してください。()そうしないと、>= 12がチェックされません。例えば:

((time =='p' || time == 'P') && hr >= 12)
于 2012-09-24T17:57:34.470 に答える