웹 에서이 C 프로그램을 찾았습니다.
#include <stdio.h>
int main(){
printf("C%d\n",(int)(90-(-4.5//**/
-4.5)));
return 0;
}
이 프로그램의 흥미로운 점은 C89 모드에서 컴파일되어 실행될 C89
때 인쇄 되고 C99 모드에서 컴파일되고 실행될 때 인쇄 C99
됩니다. 그러나이 프로그램이 어떻게 작동하는지 알 수 없습니다.
printf
위의 프로그램에서 두 번째 주장이 어떻게 작동 하는지 설명 할 수 있습니까 ?
좋은 속임수이지만 실패합니다
—
usr2564301
gcc
. 없이 std=c99
당신이 경고를 얻을 것이다, 당신이 그것을 무시하면 gcc
됩니다 여전히 를 해석 //
주석의 시작으로 (아 - 당신이 사용해야합니다 -pedantic
. 물론 나는 기본적으로 그 수 있습니다.)
@Jongware 글쎄, gcc 4.9.2에서
—
ikh
C89
명시 적으로 얻었다 std=c89
.
C99 지원을 테스트하는 방법을 찾는 동안 누군가가 이것을 발견하는 경우를 대비하여; 댓글 트릭이
—
Arkku 2016 년
#if __STDC_VERSION__ >= 199901L
아닌 과 같은 것을 사용하십시오 //
. =)
또한 C11에 대한 "C99"를 인쇄합니다.
—
Lundin
//
주석은 C99에 도입되었습니다.