gpt4 book ai didi

c++ - 为什么我可以将一个大于 127 的 int 传递给一个 char 数组,而不是直接传递?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:41 26 4
gpt4 key购买 nike

我知道 char 值不能表示为 176,但一些字节系统是无符号的 (0-255),而其他字节系统是有符号的(-128 到 127)。在这种情况下,我使用的是无符号的,所以我只想创建一个简单的字节消息数组,但是当我尝试放置一个高于 127 的值时出现此错误,但是如果我先将其声明为 int,它会避免该错误.有人可以详细解释为什么这有效吗?

方法 1:不起作用。我收到此错误:缩小从“int”到“char”的“176”的转换

char m1[3]{ 176, 118, 1 };

方法 2:这个可行

int b1 = 176;
char m1[3]{ b1, 118, 1 };

最佳答案

当使用大括号进行初始化(又名“统一初始化”)时,不允许缩小转换。否则它们是并且值只是被默默地截断。

大多数编译器都有警告选项,您可以启用这些选项来捕获许多(但不是全部)发生截断的实例。他们通常还有可以将此类警告变成错误的选项。您应该使用这些选项。

如果你想使用字节,那么 std::byte可以说是正确的类型。或者(如果你不能使用它)std::uint8_t .

关于c++ - 为什么我可以将一个大于 127 的 int 传递给一个 char 数组,而不是直接传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53213983/

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