我發現自己在檢查兩個無符號數字之間的差值是否 >= 0。我使用以下代碼運行了一個運行 Visual Studio 2022 預覽版的測驗。在這兩種情況下,答案都是正確的。這對我來說似乎是正確的,因為如何將無符號數視為負數?
但是,當我將所有型別從UINT32to更改為UINT16or 時UINT8,第一次比較回傳 false。我想這與本機大小有關。但無論大小,結果不應該是一樣的嗎?(UINT64似乎表現得像UINT32。)
#include <Windows.h>
#include <iostream>
using namespace std;
int main()
{
UINT32 a = 5;
UINT32 b = 10;
UINT32 c = 0;
if ((a - b) > 0)
{
cout << "\nTrue.";
}
else
{
cout << "\nFalse";
}
c = a - b;
if ((c) > 0)
{
cout << "\nTrue.";
}
else
{
cout << "\nFalse";
}
}
uj5u.com熱心網友回復:
問題出現是因為,whena和bareUINT16或UINT8型別,它們的
但是,當我們將型別更改為 時UINT16,我們看到a - b運算式確實被評估為int:

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/353022.html
