#c
main(_) { printf("%d",_); } gcc -o test.c test test.exe 1
Ответы
Ответ 1
Из стандарта (§ 5.1.2.2.1) следует, что так писать функцию main нельзя, и результат зависит от конкретной имплементации: The function called at program startup is named main. The implementation declares no prototype for this function. It shall be defined with a return type of int and with no parameters: int main(void) { /* ... */ } or with two parameters (referred to here as argc and argv, though any names may be used, as they are local to the function in which they are declared): int main(int argc, char *argv[]) { /* ... */ } or equivalent; or in some other implementation-defined manner. Предположу, что в вашем случае: Бестиповый аргумент посчитался int'ом, как в старых версиях C. То же относится к возвращаемому значению функции. argc отобразился на эту переменную (если вы запускаете программу без аргументов, argc == 1). Можно проверить эту версию, передав в программу аргументы командной строки и проверив, как поменяется вывод программы. Чтобы компилятор переключился на более современный диалект языка, попробуйте ключ -std=c99.
Комментариев нет:
Отправить комментарий