Я нашел эту программу 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.