C Program Structure and Data Types
C is a small, statically typed, compiled language in which the programmer works close to the machine: every object has a type that fixes how many bytes it occupies and how those bytes are interpreted.
Programming in C · topic
Object sizes and limits under a stated GATE model, integer literal types, integer promotions and the usual arithmetic conversions, signed and unsigned pitfalls, the precedence and associativity ladder, division and remainder, bitwise operators and shifts, and preprocessor macro pitfalls with formatted I/O.
C is a small, statically typed, compiled language in which the programmer works close to the machine: every object has a type that fixes how many bytes it occupies and how those bytes are interpreted.
An expression in C computes a value and may also change the state of the program, for example by assigning to a variable or printing. The value depends on how the expression is grouped (precedence and associativity); the state changes depend on when each side effect happens (sequencing).
The bitwise operators work on the individual bits of integer values. They are how C programs pack flags into a word, extract fields from hardware registers and network headers, compute masks for hashing, and implement fast multiplication or division by powers of two.
C lets you mix types freely in an expression: char with int, int with unsigned, int with double. Before any arithmetic happens, the compiler silently converts the operands to a common type, following fixed rules. Most of the time the result is what you expect.
Before a C file is compiled, it passes through the preprocessor, which works on tokens rather than on C expressions or types.
One-page visual sheets for this topic, in the sheet library on the store. Previews are free; the full sheets come with the subject pack.