Неявный int

Материал из Циклопедии
Перейти к навигации Перейти к поиску

«Неявный int» — сленговое обозначение правила языка программирования Си, согласно которому отсутствие спецификаторов типа в объявлении или имени типа означает тип int.

Например: <source lang="C">const i; /* OK: то же, что const int i; */</source>

Общая информация[править]

Правило неявного int применяется всюду, где требуется присутствие спецификаторов объявления, кроме случая указания квалификаторов типа в деклараторе указателя, поскольку в нём не допускаются спецификаторы типа. Например: <source lang="C">typedef I; /* OK: то же, что typedef int I; */</source>

Кроме того, к записи типа возвращаемого значения при определении функции правило неявного int применяется даже если все спецификаторы объявления при этом типе опущены. Например: <source lang="C">*f() /* OK: то же, что int *f() { ... */ {

   return 0;

}</source>

В противном случае, хотя бы один из спецификаторов объявления должен присутствовать. Например: <source lang="C">*f(); /* ОШИБКА: нет спецификаторов объявления и это не определение функции */</source>

Последнее требование имеет важное практическое значение: распространение правила неявного int на все случаи, которые можно было бы трактовать как опущенный набор спецификаторов объявления привело бы к многочисленным синтаксическим неоднозначностям. Например, в таком случае следующую запись для g <source lang="C">int f() {

   g();

}</source> можно было бы трактовать и как объявление функции без прототипа: <source lang="C">int f() {

   int g();

}</source> и как объявление прототипа функции, принимающей единственный аргумент типа int: <source lang="C">int f() {

   int g(int);

}</source> и даже как вызов некоторой функции с таким именем:<source lang="C">int f() {

   g();  /* вызов функции g */

}</source>

Примечания[править]