共用方式為


警告 C26451

算術溢位:在大小 位元組值上使用 運算子 ' operator ',然後將結果 轉換成 size-b 位元組值。 在呼叫運算子 ' operator ' 之前,將值轉換成較寬的類型,以避免溢位 (io.2)

此警告指出整數提升規則和類型所產生的錯誤行為,通常執行算術。

備註

程式碼分析會偵測整數值何時向左移、乘以、加入或減去,而結果會轉換成更廣泛的整數類型。 如果作業溢位較窄的整數類型,則會遺失資料。 在算數運算之前,您可以將值轉換成較寬的類型,以防止此遺失。

程式碼分析名稱: RESULT_OF_ARITHMETIC_OPERATION_CAST_TO_LARGER_SIZE

範例

下列程式碼會產生此警告:

void leftshift(int i) noexcept
{
  unsigned long long x;
  x = i << 31;  // C26451 reported here

  // code
}

若要更正此警告,請使用下列程式碼:

void leftshift(int i) noexcept
{
  unsigned long long x;
  x = static_cast<unsigned long long>(i) << 31; // OK

  // code
}

另請參閱

26450
26452
26453
26454
ES.103:不要溢位