1. Object: A region of data storage in the execution environment, the contents of which can represent values.
2. Lvalue and Rvalue:
- Lvalue: An expression that refers to an object.
- Rvalue: An expression that is not an lvalue.
3. Identifier: A sequence of characters, which can include letters, digits, and underscores, used to name entities such as variables, types, and functions.
4. Undefined Behavior: Behavior for which the C standard imposes no requirements. This encompasses situations where program behavior is unpredictable, often due to programming errors such as accessing out-of-bounds array elements.
5. Implementation-Defined Behavior: Behavior for which the C standard allows the implementation (compiler) to choose, but that must be documented by the implementation. This includes aspects like the size of certain data types.
6. Translation Unit: The basic unit of compilation in C, consisting of a source file and any included header files, translated as a single unit.
Symbols and Conventions
The C 2018 standard employs various symbols and conventions to specify the syntax and semantics of the language. Here is an explanation of some of these critical conventions:
1. Grammar Notation:
- Non-terminal Symbols: Represented in italics (e.g., expression), these symbols define production rules in the language's grammar.
- Terminal Symbols: Represented in a fixed-width font (e.g., if), these are the actual tokens in C code.
2. Syntax Diagrams: The standard uses syntax diagrams (railroad diagrams) to visually represent the grammar rules. These diagrams help in understanding how different elements of the language fit together.
3. Keywords: Reserved words in C, such as int, return, and if, which have specific meanings and cannot be used for other purposes like naming variables.
4. Operators and Punctuation: Symbols like +, -, *, /, and ; are used to perform operations and define the structure of statements.
Example of Terms in Context
To illustrate how these terms and symbols come together in a C program, consider the following simple example:
```c
#include
int main() {
int x = 10; // 'int' is a keyword, 'x' is an identifier, '=' is an operator
printf("Value of x: %d\n", x); // 'printf' is an identifier, 'Value of x: %d\n' is a string literal
return 0; // 'return' is a keyword, '0' is a constant
}
```
In this snippet:
- `int` and `return` are keywords.
- `x` is an identifier representing an object.
- `=`, `;`, and `()` are punctuation symbols.
- `10` and `0` are constants.
- `printf` is a function identifier.