小编Dar*_*_09的帖子

缩小从 int 到 unsigned char 的转换范围

当我尝试编译这段代码时

struct T
{
    unsigned char x;
};

int main()
{
    unsigned char a = 10;
    unsigned char b = 1;

    T t = {a + b};

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

错误:在 { } [-Wnarrowing]| 内将 '(((int)a) + ((int)b))' 从 'int' 缩小转换为 'unsigned char'

谁能解释一下为什么?

c++ int char narrowing

4
推荐指数
1
解决办法
8081
查看次数

常量有多少分配的空间?

我的 IT 老师说在 C 和 C++ 中为常量分配空间时只分配严格必要的空间:他说如果我们将值 12 存储在常量中,例如,只会分配 4 位内存. 我相信这不是真的,因为内存几乎总是被分成 8 位“单元”,而且因为当我们声明一个常量时,我​​们也会指明它的类型,所以我们决定为它分配多少内存。有专家意见吗?

PS:他说的是用const限定符声明的常量。

c c++ constants

1
推荐指数
1
解决办法
162
查看次数

标签 统计

c++ ×2

c ×1

char ×1

constants ×1

int ×1

narrowing ×1