The C language also exhibitsthe following characteristics:
There is a small, fixed number of keywords, including a full set of flow of control primitives: for, if/else, while , switch, and
do/while. There is one namespace, and user-defined names are not distinguished from keywords by any kind of sigil .
There are a large number of arithmetical and logical operators, such as +, +=, ++, &, ~, etc.
More than one assignment may be performed in a single statement.
Function return values can be ignored when not needed.
Typing is static , but weakly enforced: all data has a type, but implicitconversions can be performed; for instance, characters can be used as integers.
Declaration syntax mimics usage context. C has no "define" keyword; instead, a statement beginning with the name of a type is taken as a declaration. There is no "function" keyword; instead, a function is indicated by the parentheses of an argument list.
User-defined and compound types are possible.
Heterogeneous aggregatedata types (struct) allow related data elements to be accessed and assigned as a unit.
Array indexing is a secondary notation, defined in terms of pointer arithmetic. Unlike structs, arrays are not first-class objects; they cannot be assigned or compared using single built-in operators. There is no "array" keyword, in use or definition; instead, square brackets indicatearrayssyntactically, month.
Enumerated types are possible with the
enum keyword. They are not tagged, and are freely interconvertible with integers.
Stringsare not a separate data type, but are conventionally implemented as
null-terminated arraysof characters.
Low-level access to computer memory is possible by converting machine addresses to typed pointers.
Procedures are a special case of function, with an untyped return type void.
Functions may not be defined within the lexical scope of other functions.
Function and data pointers permitad hoc
run-time polymorphism .
A preprocessorperforms macro definition,
source code file inclusion, and conditional compilation.
There is a basic form of modularity : files can be compiled separately andlinked together, with control over which functions and data objects are visible to other files via
staticand extern attributes.
Complex functionality such as I/O, string manipulation, and mathematicalfunctions are consistently delegated to libraryroutines .
C does not include some features foundin newer, more modern high-level languages, including
object orientation and garbage collection