命名的強制型別轉換符號的一般形式如下:
cast-name(expression);
其中,cast-name為以下中的四種操作符之一,type是轉換的目標型別,而expression是被強制轉換的值,返回為轉換後的結果。
平時使用的編譯器隱式執行的任何型別轉換都可以通過static_cast執行。
示例:
double d = 97; //定義了double型變數d
char ch = static_cast
(d); //型別轉換為char
void *ptr = &d; //定義了void*型指標指向d
double *dp = static_cast
(ptr); //將void*型指標轉為double*型
const_cast用於去掉變數的const屬性
示例:
int main() //省略了標頭檔案和using等語句
*注:vs中提示const_cast只能作用在指標,引用,或指向物件型別的指標上。
reinterpret_cast提供更低層次的轉換(出錯的可能更大)。
示例:
int i = 10;
int *ip = &i;
char *pc = reinterpret_cast
(ip);//將int*型指標強制轉換為char*型指標。
將會在以後的博文中介紹
if( ia[index++] < ia[index] ) //undefined
c primer 筆記,第五章
case標籤必須是整型常量表示式 在case語句中,不允許跨過變數的初始化語句直接跳轉到該變數作用域內的另乙個位置 在範圍for語句中,預存了end 的值,一旦在序列中新增 刪除 元素,end函式的值就可能變得無效了 尋找處理 的過程域函式呼叫鏈剛好相反,是沿著程式的執行路徑逐層回退,直到找到適當型...
《C Primer》第五章 語句
身為c 的零基礎初學者,短期內把 c primer 啃下來是乙個比較笨但是有效的方法,一方面可以掌握比較規範的c 語法 避免被專案中亂七八糟的風格帶跑偏 另一方面又可以全面地了解c 語法以及c 11新標準 後續要做的事情就剩下查漏補缺,不斷完善自己的知識體系 個人感覺從零學習一門新知識比較好的方法是...
C Primer 第五章 語句
懸垂else else與離他最近的尚未匹配的if匹配,從而消除程式的二義性 switch表示式的值轉換為整數型別,case標籤的值必須是整型常量表示式 兩個case標籤的值不能相同 以乙個空的default標籤結束的,後面要跟空句或空塊 禁止跨過變數的初始化語句跳轉到該變數作用域的另乙個位置 可以把...