劇多
首頁
資訊
體育
娛樂
汽車
投資
財經
軍事
科技
數碼
科學
遊戲
歷史
健康
政治
影視
旅遊
育兒
美食
時尚
房產
農業
社會
文化
教育
技術
美文
情感
故事
家居
職場
自然
闢謠
心理
攝影
漫畫
生活
其它
Club
Tips
熱門話題
搜尋
註冊
登入
首頁
>
Club
>
2021-02-09 05:47
integral是什麼意思?
10
回覆列表
1 # 使用者6818057080839
C++的轉換規則遠比你想象的噁心得多。不同型別間賦值和二元運算時都可能涉及integral promotions[4.5],integral conversions[4.7]舉個例子:
輸出將會是這裡發生的事情是這樣的——標準規定比較兩個數前,比int小的型別先通通promote成int。那麼前兩個中unsigned char的-1和unsigned short的-1都會被promote成int。promote的過程很有意思,編譯器看到你說-1是char,那他就認為這個-1在promote前是0xFF,又看到你說這個char是unsigned的,那麼他promote成int時就直接在前面填零,即0x000000FF。(如果你要說它是個signed char的-1,它會給你promote成0xFFFFFFFF)接下來就看這一個,現在右邊已經和左邊在位元層面都是32位了,要進行比較的時候問題又來了當左邊的負數和右邊的unsigned作比較時,到底轉換誰?標準規定此時將負數轉成unsigned,也就是左邊的int型-1被當成unsigned對待,值就是,那麼和右邊0x000000FF的值255比較,當然兩者不相等。short的那個同理。最後兩個,即int的-1和long的-1,由於沒有從小整型到大整型promotion的這一步,所以比較結果就為true。上面說的這些東西大可以什麼都不知道,只要平時不要作死在signed和unsigned之間賦值或者進行比較。另外想說的是不要在C++中用C cast了,也即所謂的強制型別轉換,而應該用C++的const_cast, static_cast和reinterpret_cast。因為C casts在C++中是會被替換成這三種cast的組合的,而你不知道什麼時候就會被reinterpret_cast了,reinterpret_cast對於沒有經驗的人是很危險的,所以說,用C的強制型別轉換會產生無法預料的結果。
發表回復
∧
中秋節和大豐收的關聯?
∨
錯誤的時間遇到了對的人和對的時間遇到了錯誤的人,哪個更不幸?
熱門排行
厚切五花肉怎麼切?
507焊條蓋面怎麼焊出魚鱗紋?
5201314轉賬可以起訴要回嗎?
2021款x3底盤是鐵的嗎?
噴油嘴升級真的省油嗎?
一輪甲子是多少年?
母羊下不下羊羔怎麼辦?
COROLLA重力換變速箱油注意事項?
wallpaper視頻安全嗎?
2023春考電子商務可以報哪些大學?
C++的轉換規則遠比你想象的噁心得多。不同型別間賦值和二元運算時都可能涉及integral promotions[4.5],integral conversions[4.7]舉個例子:
輸出將會是這裡發生的事情是這樣的——標準規定比較兩個數前,比int小的型別先通通promote成int。那麼前兩個中unsigned char的-1和unsigned short的-1都會被promote成int。promote的過程很有意思,編譯器看到你說-1是char,那他就認為這個-1在promote前是0xFF,又看到你說這個char是unsigned的,那麼他promote成int時就直接在前面填零,即0x000000FF。(如果你要說它是個signed char的-1,它會給你promote成0xFFFFFFFF)接下來就看這一個,現在右邊已經和左邊在位元層面都是32位了,要進行比較的時候問題又來了當左邊的負數和右邊的unsigned作比較時,到底轉換誰?標準規定此時將負數轉成unsigned,也就是左邊的int型-1被當成unsigned對待,值就是,那麼和右邊0x000000FF的值255比較,當然兩者不相等。short的那個同理。最後兩個,即int的-1和long的-1,由於沒有從小整型到大整型promotion的這一步,所以比較結果就為true。上面說的這些東西大可以什麼都不知道,只要平時不要作死在signed和unsigned之間賦值或者進行比較。另外想說的是不要在C++中用C cast了,也即所謂的強制型別轉換,而應該用C++的const_cast, static_cast和reinterpret_cast。因為C casts在C++中是會被替換成這三種cast的組合的,而你不知道什麼時候就會被reinterpret_cast了,reinterpret_cast對於沒有經驗的人是很危險的,所以說,用C的強制型別轉換會產生無法預料的結果。