gpt4 book ai didi

c++ - 使用整数文字初始化 char 数组和 char 的区别

转载 作者:可可西里 更新时间:2023-11-01 16:38:35 26 4
gpt4 key购买 nike

在我的系统上(4.13.11-1-ARCH,gcc 7.2.0)charsigned。当使用 integer literal 初始化 char 数组时,如下所示:

const char mydata[] = {
0x80
};

我收到以下错误:

error: narrowing conversion of ‘128’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]

然而,当我改为执行 const char data = 0x80 时,编译器并不担心任何缩小,尽管它当然会发生。输出为 7F,即最大正 signed char 值。

问题

为什么编译器不会同样担心两种情况下的截断问题?

最佳答案

这实际上是为什么应该优先使用 {} 初始化的原因之一:它不允许缩小转换。与此相反,旧的初始化方式(如 const char data = 0x80)确实允许缩小转换。

关于c++ - 使用整数文字初始化 char 数组和 char 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47315806/

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