Я нашел эту программу C в сети:
#include <stdio.h>
int main(){
printf("C%d\n",(int)(90-(-4.5//**/
-4.5)));
return 0;
}
В этой программе интересно то, что когда она компилируется и запускается в режиме C89, она печатает, C89
а когда она компилируется и запускается в режиме C99, она печатает C99
. Но я не могу понять, как работает эта программа.
Вы можете объяснить, как работает второй аргумент printf
в указанной выше программе?
Хороший трюк - но с ним не справиться
—
включено
gcc
. Без std=c99
предупреждения вы получите предупреждение, а если проигнорируете его, gcc
все равно будет интерпретироваться //
как начало комментария (ах, вы тоже должны использовать -pedantic
. У меня это
@Jongware Ну, я получил
—
ikh
C89
с явным std=c89
в gcc 4.9.2.
На всякий случай, если кто-то обнаружит это при поиске способа проверить поддержку C99; пожалуйста, используйте что-то вроде
—
Arkku
#if __STDC_VERSION__ >= 199901L
, а не //
трюк с комментариями. =)
Он также печатает "C99" для C11 ...
—
Lundin
//
комментарий в стиле C ++ появился в C99.