C++ Typmodifikatoren
C++ erlaubt inchar, int und doublePlatzieren Sie Modifizierer vor dem Datentyp.
Modifizierer sind Schlüsselwörter, mit denen das Verhalten von Variablentypen geändert wird, um den Anforderungen verschiedener Situationen besser gerecht zu werden.
Die Datentypmodifizierer sind unten aufgeführt:
signed: Gibt an, dass die Variable negative Zahlen speichern kann. Bei Integer-Variablen kann signed weggelassen werden, da Integer-Variablen standardmäßig signed sind.
unsigned: Gibt an, dass die Variable keine negativen Zahlen speichern kann. Bei Integer-Variablen kann unsigned den Wertebereich der Variable verdoppeln.
short: Gibt an, dass die Variable einen kleineren Bereich als int hat. short int kann zu short abgekürzt werden.
long: Gibt an, dass die Variable einen größeren Bereich als int hat. long int kann zu long abgekürzt werden.
long long: Gibt an, dass die Variable einen größeren Bereich als long hat. Ein Datentypmodifikator, der in C++11 hinzugefügt wurde.
float: Stellt eine Gleitkommazahl mit einfacher Genauigkeit dar.
double: Stellt eine Gleitkommazahl mit doppelter Genauigkeit dar.
bool: Stellt den booleschen Typ dar, der nur zwei Werte hat: true und false.
char: Bezeichnet einen Zeichentyp.
wchar_t: Stellt den Breitzeichen-Typ dar, der Unicode-Zeichen speichern kann.
Modifikatorensigned, unsigned, long und shortKönnen auf Ganzzahltypen angewendet werden,signedundunsignedKönnen auf Zeichentypen angewendet werden,longKönnen auf Typen mit doppelter Genauigkeit angewendet werden.
Diese Modifikatoren können auch in Kombination verwendet werden. Modifikatorensignedundunsignedkönnen auch alslong verwendet werdenodershortDas Präfix des Modifikators. Zum Beispiel:unsigned long int。
C++ erlaubt die Verwendung der Kurzschreibweise zum Deklarieren vonunsigned short integeroderunsigned long integer. Sie können int weglassen und einfach das Wortunsigned、short schreibenoderlong,intwird impliziert. Zum Beispiel deklarieren die folgenden beiden Anweisungen beide unsigned integer-Variablen.
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,初始值为 '你'
Um den Unterschied zwischen den von C++ interpretierten Modifikatoren für vorzeichenbehaftete und vorzeichenlose Ganzzahlen zu verstehen, führen wir das folgende kurze Programm aus:
Beispiel
Wenn das obige Programm ausgeführt wird, gibt es die folgenden Ergebnisse aus:
-15536 50000
In den obigen Ergebnissen wird das Bitmuster der vorzeichenlosen short-Ganzzahl 50,000 als die vorzeichenbehaftete short-Ganzzahl -15,536 interpretiert.
Typqualifizierer in C++
Typqualifizierer liefern zusätzliche Informationen über Variablen; sie sind Schlüsselwörter, mit denen das Standardverhalten von Variablen oder Funktionen bei ihrer Definition geändert werden kann.
| Qualifizierer | Bedeutung |
|---|---|
| const | constDefiniert eine Konstante, was angibt, dass der Wert der Variablen nicht geändert werden kann. |
| volatile | ModifikatorenvolatileGibt an, dass der Wert der Variablen durch Faktoren außerhalb des Programms geändert werden kann, wie Hardware oder andere Threads. |
| restrict | durchrestrictEin so modifizierter Zeiger ist die einzige Möglichkeit, auf das Objekt zuzugreifen, auf das er zeigt. Nur C99 fügte den neuen Typqualifizierer restrict hinzu. |
| mutable | mutable wird verwendet, um Membervariablen einer Klasse zu ändern. Mit mutable geänderte Membervariablen können geändert werden, selbst wenn das Objekt, zu dem sie gehören, const ist. |
| static | Wird verwendet, um static-Variablen zu definieren, was angibt, dass der Gültigkeitsbereich der Variable auf die aktuelle Datei oder die aktuelle Funktion beschränkt ist und nicht von anderen Dateien oder Funktionen zugegriffen werden kann. |
| Register | Wird verwendet, um register-Variablen zu definieren, was angibt, dass die Variable häufig verwendet wird und in CPU-Registern gespeichert werden kann, um die Ausführungseffizienz des Programms zu verbessern. In C++11 als veraltet markiert, in C++17 offiziell entfernt. |
const-Beispiel
const int NUM = 10; // 定义常量 NUM,其值不可修改 const int* ptr = # // 定义指向常量的指针,指针所指的值不可修改 int const* ptr2 = # // 和上面一行等价
volatile-Beispiel
volatile int num = 20; // 定义变量 num,其值可能会在未知的时间被改变
mutable-Beispiel
class Example {
public:
int get_value() const {
return value_; // const 关键字表示该成员函数不会修改对象中的数据成员
}
void set_value(int value) const {
value_ = value; // mutable 关键字允许在 const 成员函数中修改成员变量
}
private:
mutable int value_;
};
static-Beispiel
void example_function() {
static int count = 0; // static 关键字使变量 count 存储在程序生命周期内都存在
count++;
}
register-Beispiel
void example_function(register int num) {
// register 关键字建议编译器将变量 num 存储在寄存器中
// 以提高程序执行速度
// 但是实际上是否会存储在寄存器中由编译器决定
}Änderungen an register nach C++11:
- In C++11 als veraltet markiert.
- Offiziell entfernt in C++17
- Als Schlüsselwort reserviert (möglicherweise für Kompatibilität oder zukünftige Verwendung)