Я знайшов цю програму 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.