Atomic operations library

If the macro constant __STDC_NO_ATOMICS__(C11) is defined by the compiler, the header <stdatomic.h>, the keyword _Atomic, and all of the names listed here are not provided. Types Defined in header <stdatomic.h> memory_order (C11) defines memory ordering constraints (enum) atomic_flag (C11) lock-free atomic boolean flag (struct) Macros Defined in header <stdatomic.h> ATOMIC_BOOL_LOCK_FREEATOMIC_CHAR_LOCK_FREEATOMIC_CHAR16_T_LOCK_FREEATOMIC_CHAR32_

atoi

Defined in header <stdlib.h> int atoi( const char *str ); long atol( const char *str ); long long atoll( const char *str ); (since C99) Interprets an integer value in a byte string pointed to by str. Discards any whitespace characters until the first non-whitespace character is found, then takes as many characters as possible to form a valid integer number representation and converts them to an integer value. The valid integer value consists of the fo

atof

Defined in header <stdlib.h> double atof( const char* str ); Interprets an floating point value in a byte string pointed to by str. Function discards any whitespace characters (as determined by std::isspace()) until first non-whitespace character is found. Then it takes as many characters as possible to form a valid floating point representation and converts them to floating point value. The valid floating point value can be one of the following: decimal floating point expr

atexit

Defined in header <stdlib.h> int atexit( void (*func)() ); Registers the function pointed to by func to be called on normal program termination (via exit() or returning from main()). The functions will be called in reverse order they were registered, i.e. the function registered last will be executed first. The same function may be registered more than once. atexit is thread-safe: calling the function from several threads does not induce a data race. The implementation is g

atanh

Defined in header <math.h> float atanhf( float arg ); (1) (since C99) double atanh( double arg ); (2) (since C99) long double atanhl( long double arg ); (3) (since C99) Defined in header <tgmath.h> #define atanh( arg ) (4) (since C99) 1-3) Computes the inverse hyperbolic tangent of arg. 4) Type-generic macro: If the argument has type long double, atanhl is called. Otherwise, if the argument has integer type or the type double, ata

atan2

Defined in header <math.h> float atan2f( float y, float x ); (1) (since C99) double atan2( double y, double x ); (2) long double atan2l( long double y, long double x ); (3) (since C99) Defined in header <tgmath.h> #define atan2( arg ) (4) (since C99) 1-3) Computes the arc tangent of y/x using the signs of arguments to determine the correct quadrant. 4) Type-generic macro: If the argument has type long double, atan2l is called. Oth

atan

Defined in header <math.h> float atanf( float arg ); (1) (since C99) double atan( double arg ); (2) long double atanl( long double arg ); (3) (since C99) Defined in header <tgmath.h> #define atan( arg ) (4) (since C99) 1-3) Computes the principal value of the arc tangent of arg. 4) Type-generic macro: If the argument has type long double, atanl is called. Otherwise, if the argument has integer type or the type double, atan is call

Assignment operators

Assignment and compound assignment operators are binary operators that modify the variable to their left using the value to their right. Operator Operator name Example Description Equivalent of = basic assignment a = b a becomes equal to b N/A += addition assignment a += b a becomes equal to the addition of a and b a = a + b -= subtraction assignment a -= b a becomes equal to the subtraction of b from a a = a - b *= multiplication assignment a *= b

assert

Defined in header <assert.h> #ifdef NDEBUG #define assert(condition) ((void)0) #else #define assert(condition) /*implementation defined*/ #endif The definition of the macro assert depends on another macro, NDEBUG, which is not defined by the standard library. If NDEBUG is defined as a macro name at the point in the source code where <assert.h> is included, then assert does nothing. If NDEBUG is not defined, then assert checks if its argument (which must have scalar ty

asinh

Defined in header <math.h> float asinhf( float arg ); (1) (since C99) double asinh( double arg ); (2) (since C99) long double asinhl( long double arg ); (3) (since C99) Defined in header <tgmath.h> #define asinh( arg ) (4) (since C99) 1-3) Computes the inverse hyperbolic sine of arg. 4) Type-generic macro: If the argument has type long double, asinhl is called. Otherwise, if the argument has integer type or the type double, asinh