1.算術轉換
進行算術運算(加、減、乘、除、取餘以及符號運算)時,不同型別數招必須轉換成同 一型別的資料才能運算,算術轉換原則為:
整型提公升:對於所有比int小的型別,包括char, signed char, unsigned char, short, unsigned short,首先會提公升為int型別。
在進行運算時,以表示式中最長型別為主,將其他型別位據均轉換成該型別,如:
(1)若運算數中有double型或float型,則其他型別資料均轉換成double型別進行運算。
(2)若運算數中最長的型別為long型.則其他型別數均轉換成long型數。
(3)若運算數中最長型別為int型,則char型也轉換成int型進行運算。算術轉換是在運算過程中自動完成的。
特別注意的是有符號和無符號之間的轉換:
包含long與unsigned int,32位機器上都是4位元組,所以均轉換為unsigned long.
包含signed與unsigned int,signed會轉換為unsigned。如果int恰好為負數,其結果為對unsigned取值個數求模的結果。比如將-1賦給8位的unsigned char,呢麼結果就是255(-1對256取模後的值)。unsigned char取值範圍0~255。
注意:在進行自動型別轉換的時候,如果原來的數是無符號數,那麼在擴充套件的時候,高位填充的是0;如果是有符號數,那麼高位填充的時符號位!
2.賦值轉換
C語言 算術轉換。
如果某個操作符的各個運算元屬於不同的型別,那麼除非其中乙個運算元的轉換為另乙個運算元的類 型,否則操作就無法進行。下面的層次體系稱為尋常算術轉換。printf u n sizeof long double 列印8 printf u n sizeof double 8 printf u n sizeo...
C語言 指標的算術運算
一 指標加法 1 指標 1 1 加乙個位元組 2的16進製表示 ox 00000002 20的16進製表示 ox 00000014 ox 0000140a 轉化為十進位制為 5130 2 加乙個單元格 直接arr 1 20 3 加整個陣列 沒意義,直接跳出了陣列 綜上指標 1表示加乙個單元格最為合適...
C語言 指標的算術運算
ptr 在執行完上述的運算之後,ptr將指向位置 1004,因為 ptr 每增加一次,它都將指向下乙個整數字置,即當前位置往後移 4 位元組。這個運算會在不影響記憶體位置中實際值的情況下,移動指標到下乙個記憶體位置。如果ptr指向乙個位址為 1000 的字元,上面的運算會導致指標指向位置 1001,...