C語言資料型別隱式轉換規則

2021-08-21 05:39:27 字數 508 閱讀 1344

c語言裡有各種資料型別,包含char, uchar, short, ushort, int, uint, long, ulong, float, double。每種數值型別能表達的值的範圍是不同的,而c/c++的編譯器又允許這幾種型別之間進行混合運算,這就帶來了型別轉換問題。

c語言隱式轉換規則簡單來說就是先進行整型提公升,再進行型別對齊。型別對齊時以size最大的型別為基準進行提公升。

對任何乙個混合運算表示式,如果表示式中沒有比int型更高的型別,則所有參與運算的數值先轉換成int型後在進行運算。

型別提公升的過程中不會發生任何精度損失。

無符號和有符號的型別混合運算,將有符號型別轉換為無符號型別。例如int型和uint型的混合運算,將int型強制轉換為uint型後再進行運算。這時很有可能發生異常。

int b=-20;

char c;

(a+b>6)?(c=1):(c=0);

實際輸出c=1;因為a+b,b先轉換為unsigned int變為乙個非常大的正數,所以a+b>6成立

C語言隱式型別轉換規則

先看程式 include include int main int argc,char argv 執行結果是 1 1 解釋 按步驟進行.1.如果其中乙個運算元為long double型別,則另乙個運算元被轉換為long double.2.否則,如果其中乙個運算元為double,則另乙個運算元被轉換為...

Mysql 資料型別隱式轉換規則

今天遇到乙個慢查詢,查詢日誌找到慢查詢語句是這樣的 select from convert test where areacode 0001 and period 20170511 and period 20170511 convert test表結構如下 create table convert ...

C語言(四)隱式型別轉換規則

隱式型別轉換的規則 確定二元運算中的哪個運算元要轉換為另乙個運算元的型別是,其機制相當簡單。其基本規則是,將值域較小的運算元型別轉換為另乙個運算元型別,但在一些情況下,兩個運算元都要轉換型別。編譯器按順序採用如下規則,確定要使用的隱式型別轉換 1 如果乙個運算元的型別是long double。就把另...