Ответ 1
main()
должен быть
int main()
В C89 тип возвращаемого по умолчанию считается int
, поэтому он работает.
Я пользователь Linux, который начал изучать C, и я пытаюсь скомпилировать этот источник, который я набрал:
#include <stdio.h>
main()
{
float c,d;
c = 10215.3;
d = c / 3;
printf("%3.2f\n",d);
return 0;
}
Он скомпилирован с использованием файла makefile, который я написал:
cc -Wall -g printf.c -o printf
но я получаю это предупреждение:
printf.c: 2: 1: warning: тип возврата по умолчанию - 'int [-Wreturn-type]
он компилирует код, и я получаю желаемый результат, но я хочу понять, что это означает
main()
должен быть
int main()
В C89 тип возвращаемого по умолчанию считается int
, поэтому он работает.
В C89 возвращаемый по умолчанию тип int. Это значение по умолчанию было удалено на C99, а компиляторы полезно напоминать вам, что ваш C-стиль без int до main() устарел.
См. спецификацию C89. Раздел 3.5.2 "Спецификаторы типов":
"Каждый список спецификаторов типов должен быть одним из следующих наборов: [...] + int, подписан, подписанный int или нет спецификаторов типов.
И во втором абзаце семантики: "Каждый из наборов [...] обозначает тот же тип, за исключением того, что для бит-полей [blabla]". Таким образом, это означает, что "спецификаторы типов" не совпадают с int.
В C99 исключается спецификация типа "или no type". (Но вы все равно можете написать подписанный без int.)
может кто-нибудь помочь мне с проектом плз? мы должны напечатать несколько букв (BKHALI) крупными символами.