C++ 修飾符類型

在C ++編程中,類型修飾符用于更改基本數(shù)據(jù)類型的含義。

C++ 允許在 char、int 和 double 數(shù)據(jù)類型前放置修飾符。修飾符用于改變基本類型的含義,所以它更能滿足各種情境的需求。

下面列出了數(shù)據(jù)類型修飾符:

  • signed

  • unsigned

  • long

  • short

修飾符 signed、unsigned、long 和 short 可應用于整型,signedunsigned 可應用于字符型,long 可應用于雙精度型。

修飾符 signedunsigned 也可以作為 longshort 修飾符的前綴。例如:unsigned long int。

C++ 允許使用速記符號來聲明無符號短整數(shù)無符號長整數(shù)。您可以不寫 int,只寫單詞 unsigned、shortunsigned、long,int 是隱含的。例如,下面的兩個語句都聲明了無符號整型變量。

unsigned x;
unsigned int y;

為了理解 C++ 解釋有符號整數(shù)和無符號整數(shù)修飾符之間的差別,我們來運行一下下面這個短程序:

#include <iostream>
using namespace std;
 
/* 
 * 這個程序演示了有符號整數(shù)和無符號整數(shù)之間的差別
*/
int main()
{
   short int i;           // 有符號短整數(shù)
   short unsigned int j;  // 無符號短整數(shù)
 
   j = 50000;
 
   i = j;
   cout << i << " " << j;
 
   return 0;
}

當上面的程序運行時,會輸出下列結果:

-15536 50000

上述結果中,無符號短整數(shù) 50,000 的位模式被解釋為有符號短整數(shù) -15,536。

這是一個類型修飾符說明列表:

數(shù)據(jù)類型大小含義
signed int4 字節(jié)
用于整數(shù)(等效于int)
unsigned int4 字節(jié)只能存儲非負整數(shù)
short2 字節(jié)用于小整數(shù)(范圍-32768至32767
long至少4字節(jié)用于大整數(shù)(等于long int)
unsigned long4 字節(jié)用于大的正整數(shù)或0(等于unsigned long int)
long long8 字節(jié)用于非常大的整數(shù)(等于long long int)。
unsigned long long8 字節(jié)用于非常大的正整數(shù)或0(等于unsigned long long int)
long double8字節(jié)用于大浮點數(shù)
signed char1 字節(jié)用于字符(保證范圍-127到127
unsigned char1 字節(jié)用于字符(范圍為0到255

short 類型修飾符

我們可以使用short的小整數(shù)(范圍?32,767至+32,767)。

例如,

// 小整數(shù)
short a = 12345;

在這里,a是一個short整數(shù)變量。

注意: short等同于short int。

long 類型修飾符

如果我們需要存儲一個大整數(shù)(范圍為-2147483647至2147483647),則可以使用類型修飾符long。例如,

// 大整數(shù)
long b = 123456;

注意: long等同于long int。

long類型修飾符也可以與double變量一起使用。

// 大浮點數(shù)
long double c = 0.333333333333333333L;

注意:為了表示long double,我們使用L后綴。如果我們不使用后綴L,則將其double轉換為該值long double(可能會導致數(shù)據(jù)丟失)。

long long

long可以重復兩次以創(chuàng)建long long類型。此類型用于比long更大的數(shù)字。long long類型修飾符只能與int一起使用。

例如,

// long long int
long long num = 12345678;

signed 和 unsigned 修飾符

有符號(signed)變量可以包含整數(shù)和負整數(shù),包括。例如,

// 正整數(shù)值
signed int x = 23;

// 負整數(shù)值
signed int y = -13;

// 0值整數(shù)
signed int z = 0;

這里,

  • x持有一個正值整數(shù)

  • y持有一個負值整數(shù)

  • z持有零值整數(shù)

無符號變量(unsigned)只能容納非負整數(shù)。例如,

// 正值整數(shù)
unsigned int x = 2;
unsigned int y = 0;

這里,

  • x 持有一個正值整數(shù)

  • y 持零

通常,int變量可以存儲范圍為從 -2,147,483,648 到 2,147,483,647 的值。而unsigned int變量可以存儲范圍為 0 到 4,294,967,295 的值。

有符號(signed),無符號(unsigned)和普通字符(plain char)

C ++有3種不同char類型:char,signed char和unsigned char。實際上,基本上只有兩種類型:signed char和unsigned char。

這是因為即使char與標準C ++中的signed char或unsigned char不相同,不同的編譯器也會根據(jù)自己的喜好將char視為signed char或unsigned char。

注意:當我們僅使用char而不是signed char或unsigned char時,此類型稱為plain char(普通字符)。

您可能已經(jīng)猜到了,signed char可以存儲正整數(shù)和負整數(shù),而unsigned char只能存儲正整數(shù)(包括0)。

signed char可以存儲的整數(shù)值的保證范圍是-127到127,而unsigned char的范圍是0到255。

// 普通字符
char plain_1 = 65;
char plain_2 = 0;

// 帶負值的普通字符
// 可能會導致某些編譯器出現(xiàn)問題
char plain_3 = -56;

// signed char
signed char  sin_1 = 12;
signed char  sin_2 = 0;
signed char  sin_3 = -12;

// unsigned char
unsigned char  unsin_1 = -85;
unsigned char  unsin_2 = 0;

這里,

  • plain_1 持有一個正值整數(shù)

  • plain_2 持有零值整數(shù)

  • sin_1 持有一個正值整數(shù)

  • sin_2 持有零值整數(shù)

  • sin_3 持有一個負值整數(shù)

  • unsin_1 持有一個負值整數(shù)

  • unsin_2 持有零值整數(shù)

注意:最好不要使用普通字符來執(zhí)行數(shù)字操作;應使用signed char 或 unsigned char代替。純字符應僅用于存儲字符值。

C++ 中的類型限定符

類型限定符提供了變量的額外信息。

限定符含義
constconst 類型的對象在程序執(zhí)行期間不能被修改改變。
volatile修飾符 volatile 告訴編譯器不需要優(yōu)化volatile聲明的變量,讓程序可以直接從內存中讀取變量。對于一般的變量編譯器會對變量進行優(yōu)化,將內存中的變量值放在寄存器中以加快讀寫效率。
restrictrestrict 修飾的指針是唯一一種訪問它所指向的對象的方式。只有 C99 增加了新的類型限定符 restrict。
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清