0

这是我在解决一本书问题时提出的代码,我被要求编写一个程序,该程序以 12 小时格式输入并以 24 小时格式输出。

有效输入为例如下午 1:11、下午 1:11、下午 1:11、下午 1:11、下午 1:11、下午 1:11、下午 1:11、下午 1:11

这是代码:

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

使用 GNU GCC 编译器。代码在单个文件中,而不是在项目中。

4

1 回答 1

4

即使没有您收到(或至少应该收到)的警告,您的条件time == 'P'也被评估为真,并且您已经完成了。

另请注意,您应该将所有的或包装在 中(),否则>= 12甚至不会检查。例如:

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