符號不同時的二元運算子提升
當二元運算子對不同符號的運算元運算時,C標準提供了確定提升的具體準則規則和結果類型。
標準第 5/9 節概述了「常用算術適用於此類運算符的轉換」。這些轉換遵循分層順序:
將這些規則應用於提供的程式碼範例:
範例1:
unsigned int one = 1; int max = std::numeric_limits<int>::max(); unsigned int result = max + one;
因為unsigned int 優先於int 在規則第 5步驟中,所有運算元都轉換為 unsigned int。因此,結果的型別為 unsigned int。
範例 2:
unsigned int us = 42; int neg = -43; int result = us + neg;
在這種情況下,規則規定兩個運算元都應轉換為 unsigned int。但是,結果值 (-1) 不能用 unsigned int 表示。因此,表達式的結果類型是根據 §4.7/3 實現定義的。
以上是C 如何處理具有不同符號的二元運算子提升?的詳細內容。更多資訊請關注PHP中文網其他相關文章!