gpt4 book ai didi

c++ - 将超出范围的整数分配给带符号的 char 类型

转载 作者:行者123 更新时间:2023-12-02 09:50:22 25 4
gpt4 key购买 nike

signed char a = 128;
假设一个字节是8位,这是未定义的吗?
我所知道的是,将超出范围的值分配给有符号类型是未定义的,但是 Bjarne Stroustrup 在 C++ 编程语言中说,如果我将整数 255 分配给 8 位字节机器上的 char,其中 char 被签名结果是-1。

最佳答案

is this undefined?

没有。

What I know is that assigning an out-of-range value to a signed type is undefined

也没有。

管理这一点的规则是整数类型之间的转换。转换是为了初始化还是赋值并不重要。

将整数值转换为有符号整数类型时,如果结果不可表示,则:

current 标准 C++17 中:结果值将由实现定义。

即将发布的 标准 C++20 中:该值将与原始值模 2N 一致,其中 N 是目标类型的宽度(仅就像无符号整数一样)。 -1 与 255 模 28 全等。


请注意,与转换不同,有符号算术溢出的行为是未定义的。

关于c++ - 将超出范围的整数分配给带符号的 char 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60179125/

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