Я знайшов цю програму 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 Ну, я отримав
—
ikh
C89
з явним std=c89
в gcc 4.9.2.
Про всяк випадок, коли хтось виявить це під час пошуку способу перевірити підтримку C99; будь ласка, використовуйте щось на кшталт
—
Арку
#if __STDC_VERSION__ >= 199901L
, а не //
трюк з коментарями. =)
Він також друкує "C99" для C11 ...
—
Лундін
//
коментар у стилі C ++ був представлений у C99.