integer constant

Allows values of integer type to be used in expressions directly. Syntax An integer constant is a non-lvalue expression of the form. decimal-constant integer-suffix(optional) (1) octal-constant integer-suffix(optional) (2) hex-constant integer-suffix(optional) (3) where. decimal-constant is a non-zero decimal digit (1, 2, 3, 4, 5, 6, 7, 8, 9), followed by zero or more decimal digits (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) octal-constant is the digit zero (0) followed by zero or

int

Usage int type: as the declaration of the type

inline function specifier

Declares an inline function. Syntax inline function_declaration (since C99) Explanation The intent of the inline specifier is to serve as a hint for the compiler to perform optimizations, such as function inlining, which require the definition of a function to be visible at the call site. The compilers can (and usually do) ignore presence or absence of the inline specifier for the purpose of optimization. If the compiler performs function inlining, it replaces a call of that funct

inline

Usage inline function specifier

Initialization

A declaraton of an object may provide its initial value through the process known as initialization. For each declarator, the initializer, if not omitted, may be one of the following: = expression (1) = { initializer-list } (2) where initializer-list is a non-empty comma-separated list of initializers (with an optional trailing comma), where each initializer has one of three possible forms: expression (1) { initializer-list } (2) designator-list = initializer (3

INFINITY

Defined in header <math.h> #define INFINITY /*implementation defined*/ (since C99) If the implementation supports floating-point infinities, the macro INFINITY expands to constant expression of type float which evaluates to positive or unsigned infinity. If the implementation does not support floating-point infinities, the macro INFINITY expands to a positive value that is guaranteed to overflow a float at compile time, and the use of this macro generates a compiler warning

Increment/decrement operators

Increment/decrement operators are unary operators that increment/decrement the value of a variable by 1. They can have postfix form: expr ++ expr -- As well as the prefix form: ++ expr -- expr The operand expr of both prefix and postfix increment or decrement must be a modifiable lvalue of integer type (including _Bool and enums), real floating type, or a pointer type. It may be cvr-qualified, unqualified, or atomic. The result of the postfix increment and decrement

Implicit conversions

When an expression is used in the context where a value of a different type is expected, conversion may occur: int n = 1L; // expression 1L has type long, int is expected n = 2.1; // expression 2.1 has type double, int is expected char *p = malloc(10); // expression malloc(10) has type void*, char* is expected Conversions take place in the following situations: Conversion as if by assignment In the assignment operator, the value of the right-hand operand is converted to the unqualified type

imaginary

Defined in header <complex.h> #define imaginary _Imaginary (since C99) This macro expands to the keyword _Imaginary. This is a convenience macro that makes it possible to use float imaginary, double imaginary, and long double imaginary as an alternative way to write the three pure imaginary C types float _Imaginary, double _Imaginary, and long double _Imaginary. As with any pure imaginary number support in C, this macro is only defined if the imaginary numbers are supported

ilogb

Defined in header <math.h> int ilogbf( float arg ); (1) (since C99) int ilogb( double arg ); (2) (since C99) int ilogbl( long double arg ); (3) (since C99) Defined in header <tgmath.h> #define ilogb( arg ) (4) (since C99) Defined in header <math.h> #define FP_ILOGB0 /*implementation-defined*/ (5) (since C99) #define FP_ILOGBNAN /*implementation-defined*/ (6) (since C99) 1-3) Extracts the value of the unbiased exponent