웹 에서이 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에 도입되었습니다.