### 19.1 Expression Statement ¶

The most common kind of statement in C is an expression statement. It consists of an expression followed by a semicolon. The expression’s value is discarded, so the expressions that are useful are those that have side effects: assignment expressions, increment and decrement expressions, and function calls. Here are examples of expression statements:

    x = 5;              /* Assignment expression. */
    p++;                /* Increment expression. */
    printf ("Done\n");  /* Function call expression. */
    *p;                 /* Cause SIGSEGV signal if p is null. */
    x + y;              /* Useless statement without effect. */

In very unusual circumstances we use an expression statement whose purpose is to get a fault if an address is invalid:

    volatile char *p;
    ...
    *p;                 /* Cause signal if p is null. */

If the target of `p` is not declared `volatile`, the compiler might optimize away the memory access, since it knows that the value isn’t really used. See `volatile` Variables and Fields.