C++ Modificateurs de type
C++ permet, pourchar, int et double, de placer les modificateurs avant le type de données.
Les modificateurs sont des mots-clés utilisés pour modifier le comportement des types de variables, répondant mieux aux besoins de diverses situations.
Les modificateurs de type de données sont listés ci-dessous :
signed : indique que la variable peut stocker des nombres négatifs. Pour les variables entières, signed peut être omis car les variables entières sont signées par défaut.
unsigned : indique que la variable ne peut pas stocker de nombres négatifs. Pour les variables entières, unsigned peut doubler la plage de la variable.
short : indique que la variable a une plage plus petite que int. short int peut être abrégé en short.
long : indique que la variable a une plage plus grande que int. long int peut être abrégé en long.
long long : Indique que la variable a une plage plus grande que long. Un modificateur de type de données ajouté en C++11.
float : Représente un nombre à virgule flottante en simple précision.
double : Représente un nombre à virgule flottante en double précision.
bool : Représente le type booléen, qui ne possède que deux valeurs : true et false.
char : Indique un type caractère.
wchar_t : Représente le type caractère large, qui peut stocker des caractères Unicode.
Modificateurssigned, unsigned, long et shortPeuvent être appliqués aux types entiers,signedetunsignedPeut être appliqué aux types de caractères,longPeut être appliqué aux types en double précision.
Ces modificateurs peuvent également être utilisés en combinaison. Les modificateurssignedetunsignedpeuvent également être utilisés commelongoushortLe préfixe du modificateur. Par exemple :unsigned long int。
C++ permet d'utiliser une notation abrégée pour déclarerunsigned short integerouunsigned long integer. Vous pouvez omettre int et écrire simplement le motunsigned、shortoulong,intest implicite. Par exemple, les deux instructions suivantes déclarent toutes les deux des variables entières non signées.
signed int num1 = -10; // 定义有符号整型变量 num1,初始值为 -10 unsigned int num2 = 20; // 定义无符号整型变量 num2,初始值为 20 short int num1 = 10; // 定义短整型变量 num1,初始值为 10 long int num2 = 100000; // 定义长整型变量 num2,初始值为 100000 long long int num1 = 10000000000; // 定义长长整型变量 num1,初始值为 10000000000 float num1 = 3.14f; // 定义单精度浮点数变量 num1,初始值为 3.14 double num2 = 2.71828; // 定义双精度浮点数变量 num2,初始值为 2.71828 bool flag = true; // 定义布尔类型变量 flag,初始值为 true char ch1 = 'a'; // 定义字符类型变量 ch1,初始值为 'a' wchar_t ch2 = L'你'; // 定义宽字符类型变量 ch2,初始值为 '你'
Pour comprendre la différence entre les modificateurs d'entier signé et d'entier non signé tels qu'interprétés par C++, exécutons le court programme suivant :
Exemple
Lorsque le programme ci-dessus s'exécute, il affichera les résultats suivants :
-15536 50000
Dans les résultats ci-dessus, le motif binaire de l'entier court non signé 50,000 est interprété comme l'entier court signé -15,536.
Qualificateurs de type en C++
Les qualificateurs de type fournissent des informations supplémentaires sur les variables ; ce sont des mots-clés utilisés pour modifier le comportement par défaut des variables ou des fonctions lors de leur définition.
| Qualificateurs | Signification |
|---|---|
| const | constDéfinit une constante, indiquant que la valeur de la variable ne peut pas être modifiée. |
| volatile | ModificateursvolatileIndique que la valeur de la variable peut être modifiée par des facteurs extérieurs au programme, tels que le matériel ou d'autres threads. |
| restrict | parrestrictUn pointeur ainsi modifié est le seul moyen d'accéder à l'objet vers lequel il pointe. Seul C99 a ajouté le nouveau qualificateur de type restrict. |
| mutable | mutable est utilisé pour modifier les variables membres d'une classe. Les variables membres modifiées par mutable peuvent être modifiées même si l'objet auquel elles appartiennent est const. |
| static | Utilisé pour définir des variables static, indiquant que la portée de la variable est limitée au fichier actuel ou à la fonction actuelle, et que la variable ne peut pas être accédée par d'autres fichiers ou fonctions. |
| registre | Utilisé pour définir des variables register, indiquant que la variable est fréquemment utilisée et peut être stockée dans les registres du CPU afin d'améliorer l'efficacité d'exécution du programme. Marqué comme obsolète en C++11, officiellement supprimé en C++17. |
exemple const
const int NUM = 10; // 定义常量 NUM,其值不可修改 const int* ptr = # // 定义指向常量的指针,指针所指的值不可修改 int const* ptr2 = # // 和上面一行等价
exemple volatile
volatile int num = 20; // 定义变量 num,其值可能会在未知的时间被改变
exemple mutable
class Example {
public:
int get_value() const {
return value_; // const 关键字表示该成员函数不会修改对象中的数据成员
}
void set_value(int value) const {
value_ = value; // mutable 关键字允许在 const 成员函数中修改成员变量
}
private:
mutable int value_;
};
exemple static
void example_function() {
static int count = 0; // static 关键字使变量 count 存储在程序生命周期内都存在
count++;
}
exemple register
void example_function(register int num) {
// register 关键字建议编译器将变量 num 存储在寄存器中
// 以提高程序执行速度
// 但是实际上是否会存储在寄存器中由编译器决定
}Modifications apportées à register après C++11 :
- Marqué comme obsolète en C++11.
- Officiellement supprimé en C++17
- Réservé en tant que mot-clé (éventuellement pour compatibilité ou usage futur)