警告 C26450
算術溢位:' operator ' 運算會在編譯時期造成溢位。 使用較寬的類型來儲存運算元 (io.1)
備註
這個警告表示算數運算在編譯時期是可證明遺失的。 當運算元都是編譯時間常數時,可以判斷提示它。 目前,我們會檢查這類溢位的左移、乘法、加法和減法運算。
警告 C4307 是 Microsoft C++ 編譯器中類似的檢查。
程式碼分析名稱: RESULT_OF_ARITHMETIC_OPERATION_PROVABLY_LOSSY
範例
int multiply()
{
const int a = INT_MAX;
const int b = 2;
int c = a * b; // C26450 reported here
return c;
}
若要更正此警告,請使用下列程式碼。
long long multiply()
{
const int a = INT_MAX;
const int b = 2;
long long c = static_cast<long long>(a) * b; // OK
return c;
}
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應