Namespaces
Variants

Expressions

From cppreference.net

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 + = b
a - = b
a * = b
a / = b
a % = b
a & = b
a | = b
a ^ = b
a <<= b
a >>= b

++ a
-- a
a ++
a --

+ a
- a
a + b
a - b
a * b
a / b
a % b
~a
a & b
a | b
a ^ b
a << b
a >> b

! a
a && b
a || b

a == b
a ! = b
a < b
a > b
a <= b
a >= b

a [ b ]
* a
& a
a - > b
a. b

a ( ... )
a, b
( type ) a
a ? b : c
sizeof


_Alignof
(depuis C11)
(jusqu'à C23)

alignof
(depuis C23)

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 :

1) Constantes et littéraux (par ex. 2 ou "Hello, world" )
2) Identifiants appropriés (par exemple n ou printf )
(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 _Alignof (jusqu'à C23) alignof (depuis C23) , l'expression de contrôle d'une sélection générique , et les expressions de taille des VLA qui sont des opérandes de _Alignof (jusqu'à C23) alignof (depuis C23) sont également des expressions qui ne sont pas évaluées.

(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