Expressions
Une expression est une séquence d' opérateurs et de leurs opérandes , qui spécifie un calcul.
L'évaluation d'expression peut produire un résultat (par exemple, l'évaluation de 2 + 2 produit le résultat 4 ), peut générer des effets secondaires (par exemple, l'évaluation de printf ( "%d" , 4 ) envoie le caractère '4' vers le flux de sortie standard), et peut désigner des objets ou fonctions.
Table des matières |
Général
- catégories de valeurs (lvalue, non-lvalue object, function designator) classifient les expressions selon leurs valeurs
- ordre d'évaluation des arguments et des sous-expressions spécifie l'ordre dans lequel les résultats intermédiaires sont obtenus
Opérateurs
| Opérateurs courants | ||||||
|---|---|---|---|---|---|---|
| affectation |
incrémentation
décrémentation |
arithmétiques | logiques | comparaison | accès membre | autres |
|
a
=
b
|
++
a
|
+
a
|
!
a
|
a
==
b
|
a
[
b
]
|
a
(
...
)
|
- priorité des opérateurs définit l'ordre dans lequel les opérateurs sont liés à leurs arguments
- représentations alternatives sont des orthographes alternatives pour certains opérateurs
Conversions
- Conversions implicites se produisent lorsque les types des opérandes ne correspondent pas aux attentes des opérateurs
- Casts peuvent être utilisés pour convertir explicitement des valeurs d'un type à un autre.
Autre
- expressions constantes peuvent être évaluées à la compilation et utilisées dans un contexte de compilation ( non-VLA (depuis C99) tailles de tableaux, initialiseurs statiques, etc.)
|
(depuis C11) |
|
(depuis C99) |
Expressions primaires
Les opérandes de tout opérateur peuvent être d'autres expressions ou elles peuvent être des expressions primaires (par exemple dans 1 + 2 * 3 , les opérandes de l'opérateur+ sont la sous-expression 2 * 3 et l'expression primaire 1 ).
Les expressions primaires sont l'une des suivantes :
| (depuis C11) |
Toute expression entre parenthèses est également classée comme expression primaire : cela garantit que les parenthèses ont une priorité supérieure à tout opérateur.
Constantes et littéraux
Les valeurs constantes de certains types peuvent être intégrées dans le code source d'un programme C en utilisant des expressions spécialisées appelées littéraux (pour les expressions lvalue) et constantes (pour les expressions non lvalue)
- constantes entières sont des nombres décimaux, octaux ou hexadécimaux de type entier.
- constantes de caractère sont des caractères individuels de type int adaptés à la conversion en un type caractère ou de type char8_t , (depuis C23) char16_t , char32_t , ou (depuis C11) wchar_t
- constantes flottantes sont des valeurs de type float , double , ou long double
|
(depuis C23) |
- littéraux de chaîne sont des séquences de caractères de type char [ ] , char8_t [ ] (depuis C23) , char16_t [ ] , char32_t [ ] , (depuis C11) ou wchar_t [ ] qui représentent des chaînes terminées par un caractère nul
|
(depuis C99) |
Expressions non évaluées
Les opérandes de l' sizeof opérateur sont des expressions qui ne sont pas évaluées (sauf s'il s'agit de VLA) (depuis C99) . Ainsi, size_t n = sizeof ( printf ( "%d" , 4 ) ) ; n'effectue pas de sortie console.
|
Les opérandes de l'opérateur
|
(depuis C11) |
Références
- Norme C23 (ISO/CEI 9899:2024) :
-
- 6.5 Expressions (p: TBD)
-
- 6.6 Expressions constantes (p: TBD)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 6.5 Expressions (p: 55-75)
-
- 6.6 Expressions constantes (p: 76-77)
- Norme C11 (ISO/CEI 9899:2011) :
-
- 6.5 Expressions (p: 76-105)
-
- 6.6 Expressions constantes (p: 106-107)
- Norme C99 (ISO/CEI 9899:1999) :
-
- 6.5 Expressions (p: 67-94)
-
- 6.6 Expressions constantes (p: 95-96)
- Norme C89/C90 (ISO/CEI 9899:1990) :
-
- 3.3 EXPRESSIONS
-
- 3.4 CONSTANT EXPRESSIONS
Voir aussi
|
Documentation C++
pour
Expressions
|