C++ 允許 char、int 和 double 類(lèi)型的數(shù)據(jù)可以在其前面使用修飾符。修飾符用于更改數(shù)據(jù)變量的意義以實(shí)現(xiàn)變量可以更加精準(zhǔn)的運(yùn)用到其所應(yīng)用的環(huán)境中。
數(shù)據(jù)類(lèi)型的修飾符如下:
signed、unsigned、long 和 short 可以應(yīng)用到整型基礎(chǔ)類(lèi)型。此外,signed 和 unsigned 可以應(yīng)用到char類(lèi)型,long 可以應(yīng)用到 double 類(lèi)型。
signed 和 unsigned 也可以作為 long 或 short 修飾符的前綴。比如,unsigned long int.
C++ 也允許使用簡(jiǎn)化字符的方式來(lái)聲明 unsigned、short 或 long 整數(shù)。程序員可以?xún)H使用 unsigned、short 或 long 而不使用 int 來(lái)定義整型變量。這里的 int 就被簡(jiǎn)化掉了。比如,下面的兩句程序均實(shí)現(xiàn)對(duì) unsigned 整型變量的聲明的功能。
unsigned x;
unsigned int y;
為了理解 C++ 中 signed 和 unsigned 整數(shù)修飾符的不同??梢試L試著運(yùn)行下面的程序:
#include <iostream>
using namespace std;
/* This program shows the difference between
* signed and unsigned integers.
*/
int main()
{
short int i; // a signed short integer
short unsigned int j; // an unsigned short integer
j = 50000;
i = j;
cout << i << " " << j;
return 0;
}
上述程序執(zhí)行結(jié)果如下:
-15536 50000
上述結(jié)果的背后原因是,unsigned 短整型變量的值為 5000,當(dāng)時(shí) short 類(lèi)型時(shí),就是-15536 了。這和值表示范圍有關(guān)系。
類(lèi)型限定符提供了關(guān)于變量保存值更豐富的信息:
限定符 | 意義 |
---|---|
const | const 類(lèi)型修飾的對(duì)象在起運(yùn)行周期內(nèi)不可被改變 |
volatile | volatile 修飾符用于提示編譯器,程序中某個(gè)變量值的改變可能不是程序顯式修改的 |
restrict | restrict 限定符修飾的指針意味著所有修改該指針?biāo)赶騼?nèi)容的操作全部都是基于該指針的。僅在 C99 標(biāo)準(zhǔn)中增加了這個(gè)修飾符。 |