int 與 int 的差別

2021-09-07 11:23:24 字數 479 閱讀 4759

晚上被問到乙個c++的問題:

int **pa=new int* [5];

int *pb=new (int*)[5];

上面兩行**的差別是什麼?

分析與實驗結果例如以下:

(1)第一行**能夠在vs2010上正常執行,new出來的是乙個存放int型指標變數的陣列。能夠存放5個這種元素。

而第二行**則編譯錯誤。悲劇的是vs2010在編譯之前並未紅線提示錯誤。

(2)設計了例如以下兩行**,當中第一行正常,第二行提示錯誤,沒有定義的pbb識別符號,猜測加括號後未體現型別的作用,故pbb仍沒有定義。

int* paa[5];

(int*) pbb[5];

(3)經過第二步,基本確定(int*)不再是型別,而是將某物件進行強制型別轉換。

在查閱操作符優先順序的過程中。發現new的優先順序要低於型別轉換操作符的優先順序,故更加確定原問題第二行**的(int*)會優先執行,不再是int*型別。

INT 10 與INT 11 的區別

你是不是以為int 10 會比 int 11 省空間!那你就大錯特錯了 首先看一下定義 int m m指示最大顯示寬度。顯示寬度與儲存空間大小或型別包含的值的範圍無關,只是顯示寬度,那有啥用呢?其實主要用於固定其顯示長度,例如 時間戳是十位,可以定義int 10 讓其固定10位 md5密碼是32位,...

有關 int 和 int 的區別

先看一段程式?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 include stdafx.h include usingnamespacestd int tmain intargc,tchar argv...

有關 int 和 int 的區別

先看一段程式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 include stdafx.h include usingnamespacestd int tmain intargc,tchar argv...