淺談c語言中類型隱性轉(zhuǎn)換的坑
謹記:在C語言中,當兩種不同類型之間運算時,低字節(jié)長度類型會向高自己長度類型轉(zhuǎn)換,有符號會向無符號類型轉(zhuǎn)換。
舉例子如下:
#include <stdio.h> void func(void) { int i = 1; unsigned char c1 = 1; signed char c2 = -1; if (c2 > i){ printf("\r\n -1 > 1"); } else{ printf("\r\n -1 <= 1"); } if (c2 > c1){ printf("\r\n -1 > 1"); } else { printf("\r\n -1 <= 1"); } printf ("\n"); } int main() { func(); return 0; }
輸出:
-1 <= 1
-1 <= 1
當C2與i進行比較時,由于C2是有符號8位,i是無符號32位,根據(jù)C語言的規(guī)則,c2被轉(zhuǎn)換成32位,即-1的補碼,故會得出-1>1的結(jié)論。
而后面一個-1<1的情況是 c2轉(zhuǎn)化成無符號8位整數(shù),即255,255, 所以大于1。
以上這篇淺談c語言中類型隱性轉(zhuǎn)換的坑就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Qt的QChartView實現(xiàn)縮放和放大功能
QCustomPlot是一個小型的Qt畫圖標類,支持繪制靜態(tài)曲線、動態(tài)曲線、多重坐標曲線,柱狀圖,蠟燭圖,這篇文章主要介紹了Qt的QChartView實現(xiàn)縮放和放大功能,需要的朋友可以參考下2022-09-09C語言關(guān)于自定義數(shù)據(jù)類型之枚舉和聯(lián)合體詳解
枚舉顧名思義就是把所有的可能性列舉出來,像一個星期分為七天我們就可以使用枚舉,聯(lián)合體是由關(guān)鍵字union和標簽定義的,和枚舉是一樣的定義方式,不一樣的是,一個聯(lián)合體只有一塊內(nèi)存空間,什么意思呢,就相當于只開辟最大的變量的內(nèi)存,其他的變量都在那個變量占據(jù)空間2021-11-11C++?primer超詳細講解關(guān)聯(lián)容器
兩個主要的關(guān)聯(lián)容器為map和set,map中元素是一些關(guān)鍵字—值對,關(guān)鍵字起索引的作用,值則表示與索引相關(guān)聯(lián)的數(shù)據(jù)。set中每個元素只包含一個關(guān)鍵字,set支持高效的關(guān)鍵字查詢操作——檢查一個給定關(guān)鍵字是否在set中2022-07-07