源代码
/**
******************************************************************************
* @file uint.cpp
* @author zhy
* @version 1.0
* @date 2021-03-05
* @brief 无符号整形减法验证
******************************************************************************
*/
#include <iostream>
int main()
{
unsigned short short1 = 1;
unsigned short short2 = 0xFFFF;
std::cout << "(unsigned short)(short1 - short2) = " << (unsigned short)(short1 - short2) << std::endl;
std::cout << "short1 - short2 = " << short1 - short2 << std::endl;
unsigned int int1 = 1;
unsigned int int2 = 0xFFFFFFFF;
std::cout << "(unsigned int)(int1 - int2) = " << (unsigned int)(int1 - int2) << std::endl;
std::cout << "int1 - int2 = " << int1 - int2 << std::endl;
return 0;
}
结果
(unsigned short)(short1 - short2) = 2
short1 - short2 = -65534
(unsigned int)(int1 - int2) = 2
int1 - int2 = 2
分析
在C++中,无符号的short和int的减法结果并不相同!