首頁 > 後端開發 > C++ > 普通算術轉換如何決定帶有符號和無符號運算元的二元「\」運算子的結果類型?

普通算術轉換如何決定帶有符號和無符號運算元的二元「\」運算子的結果類型?

DDD
發布: 2024-12-01 18:15:12
原創
225 人瀏覽過

How Do Usual Arithmetic Conversions Determine the Result Type of Binary

有符號和無符號二元運算子的提升規則

考慮以下程式碼片段:

// 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;
登入後複製

在這些情況下,考慮到不同的符號符號,「 」運算子如何決定正確的結果類型運算元?

運算子遵循「通常算術轉換」規則,該規則根據操作數類型指示類型轉換步驟。根據此規則,如果任一操作數為:

  • long double,則兩個操作數都轉換為 long double。
  • double,兩個運算元都轉換為 double。
  • float,兩個運算元都轉換為 float。
  • unsigned long,另一個操作數轉換為unsigned long.
  • long int 和另一個操作數unsigned int,如果unsigned int 的值可以用long int 表示,則兩個操作數都轉換為unsigned long int;否則,兩者都轉換為long。
  • long,另一個操作數轉換為 long。
  • unsigned,另一個運算元轉換為 unsigned。

自int 和unsigned int 在規則中可以互換,選擇具有更寬類型(unsigned int)的操作數作為結果type.

這解釋了為什麼在程式碼片段1 中,結果是unsigned int (2147483648),而在程式碼片段2 中,結果是int (-1)。有符號運算元 (neg) 隱式轉換為無符號 int,在後一種情況下會產生未定義的值。

以上是普通算術轉換如何決定帶有符號和無符號運算元的二元「\」運算子的結果類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板