„ Implicit int ” este argoul pentru regula limbajului de programare C, conform căreia absența specificatorilor de tip într-o declarație sau nume de tip înseamnă un tip int. De exemplu:
const i ; /* OK: la fel ca const int i; */Regula implicită intse aplică oriunde sunt solicitați specificatorii de declarație , cu excepția cazului în care se specifică calificatorii de tip într- un declarator pointer , deoarece nu permite specificatorii de tip. De exemplu:
typedef I ; /* OK: la fel ca typedef int I; */În plus, regula implicită intse aplică unei intrări de tip returnat într-o definiție a funcției, chiar dacă toți specificatorii de declarație sunt omiși din acel tip. De exemplu:
* f () /* OK: la fel ca int *f() { ... */ { returnează 0 ; }În caz contrar, cel puțin unul dintre specificatorii declarației trebuie să fie prezenți. De exemplu:
* f (); /* EROARE: nu există specificatori de declarație și aceasta nu este o definiție a funcției */Ultima cerință este de mare importanță practică: extinderea regulii implicite intla toate cazurile care ar putea fi tratate ca un set omis de specificatori de declarații ar duce la numeroase ambiguități sintactice . De exemplu, într-un astfel de caz, următoarea intrare pentrug
int f () { g (); }ar putea fi interpretată și ca o declarație de funcție fără un prototip:
int f () { intg ( ); }și ca declarație de prototip de funcție care ia un singur argument de tip int:
int f () { int g ( int ); }și chiar ca apel la o funcție cu acest nume:
int f () { g (); /* apelează funcția g */ }