이것은 12 시간 형식의 입력을 받고 24 시간 형식으로 출력을 제공하는 프로그램을 작성하라는 책 문제를 해결하는 동안 생각해 낸 코드입니다. 11P, 1시 11분 오후 1 : 11P, 1시 11분 오후 1:11 P, 1:11 PM, 1:11 P 여기이 C 프로그램이 작동하는 이유는 무엇입니까?
는 IS
유효한 입력은 예를 들어, 1:11 PM, 일이 코드 : 내가 쓴 경우 상태에서
#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(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- on-multiple-characters) – pb2q