C C 數字常量的字首和與字尾

2021-10-18 06:41:18 字數 799 閱讀 9229

c/c++中,我們經常會用到諸如0x100、100、0b1101這類的數字常量,這裡的0x  0b就是數字常量的字首,分別表示此數字是十六進製制和二進位制。100 不加任何字首,表示十進位制數。

我們有時候也會見到一些諸如 0x1fffful、0x1ffffull 、0x1ffffll、1.8f之類的數字字尾,這裡的ul表示unsigned long,ull表示unsigned long long,ll 表示signed long long,f表示float浮點數。也可以用數值後面加h或b來表示十六進製制和二進位制。

數值進製的表示很好理解,ul、ull、ll這些字尾有什麼作用呢,這裡看如下乙個例子,可以發現,只有output_2是我們期待的結果。實際應用中,一般在位址轉換過程中需要進行高低位址的merge動作,此時就需要特別注意。

c/c++ 在進行左移操作時,一定要注意資料型別的位數。預設情況下,如果直接使用 乙個數字常量(如0x1)進行左移操作,編譯器會認為你需要的乙個32bit資料,故一旦你期待的左移後資料超出32bit,此時就會出錯,且此錯誤編譯器不會給你任何提示。故需要對0x1進行強制型別轉換,或加上數字字尾。

// g++ -g -std=c++11 ***.cpp -o sim

#include using namespace std;

int main(int argc, char* ar**)

//result :

// output_1 =0x1fffffff

// output_2 =0x401fffffff

// output_3 =0x401fffffff

C C 中的常量指標與指標常量

常量指標 常量指標是指向常量的指標,指標指向的記憶體位址的內容是不可修改的。常量指標定義 const int p a 告訴編譯器,p是常量,不能將 p作為左值進行操作。但這裡的指標p還是乙個變數,它的內容存放常量的位址,所以先宣告常量指標再初始化是允許的,指標也是允許修改的,例如 inta 0,b ...

C C 中的常量指標與指標常量

常量指標 常量指標是指向常量的指標,指標指向的記憶體位址的內容是不可修改的。常量指標定義 const int p a 告訴編譯器,p是常量,不能將 p作為左值進行操作。但這裡的指標p還是乙個變數,它的內容存放常量的位址,所以先宣告常量指標再初始化是允許的,指標也是允許修改的,例如 int a 0,b...

遞增的字首和字尾的區別

字首 出現在其作用的變數前 字尾 出現在其作用的變數後 從下面的結果可以看出對輸出沒有影響,效果等同於 super super 1 ultra ultra 1 include intmain void getchar return0 輸出顯示結果 super 1,ultra 1 super 2,ul...