gpt4 book ai didi

c++ - gcc(TDM-GCC)中的无符号整数溢出错误?

转载 作者:行者123 更新时间:2023-11-30 01:51:49 29 4
gpt4 key购买 nike

#include <iostream>
#include <climits>
#include <cinttypes>
using namespace std;

int main()
{
uint16_t i = 0;
cout << USHRT_MAX << '\n' << i - 1 << '\n';
return 0;
}

输出

65535
-1

我期望两个相等的输出,但事实并非如此。这不是不符合标准的行为吗?

*系统:Windows7

*编译选项:g++ -o $(FileNameNoExt) $(FileName) -std=c++11 -Wall -Wextra

最佳答案

当 C++ 看到表达式时

i - 1

它自动将 i 和 1 提升为 int 类型,因此表达式的结果是 int,因此输出 -1 .

要解决这个问题,要么将表达式的整体结果转换回 uint16_t,要么做类似的事情

i--;

就地修改i,然后打印i

希望这对您有所帮助!

关于c++ - gcc(TDM-GCC)中的无符号整数溢出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25634023/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com