有符號和無符號二元運算子的提升規則
考慮以下程式碼片段:
// Snippet 1 int max = std::numeric_limits<int>::max(); unsigned int one = 1; unsigned int result = max + one;
// Snippet 2 unsigned int us = 42; int neg = -43; int result = us + neg;
在這些情況下,考慮到不同的符號符號,「 」運算子如何決定正確的結果類型運算元?
運算子遵循「通常算術轉換」規則,該規則根據操作數類型指示類型轉換步驟。根據此規則,如果任一操作數為:
自int 和unsigned int 在規則中可以互換,選擇具有更寬類型(unsigned int)的操作數作為結果type.
這解釋了為什麼在程式碼片段1 中,結果是unsigned int (2147483648),而在程式碼片段2 中,結果是int (-1)。有符號運算元 (neg) 隱式轉換為無符號 int,在後一種情況下會產生未定義的值。
以上是普通算術轉換如何決定帶有符號和無符號運算元的二元「\」運算子的結果類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!