gpt4 book ai didi

c++ - 错误 : invalid suffix "b11111111111111111111111111111111" on integer constant

转载 作者:IT老高 更新时间:2023-10-28 21:45:55 33 4
gpt4 key购买 nike

我在 RHEL 5.7 x86_64 机器上使用 g++ 版本 4.1.2。这与 RHEL 6.0 x86_64 附带的 g++ 版本 4.4.5 构建得很好。这个编译器错误是什么意思,如何解决?

[mehoggan@hoggant35002 C]$ g++ -Wall -o binary ./binary.cpp 
./binary.cpp:2:5: error: invalid suffix "b11111111111111111111111111111111" on integer constant
./binary.cpp:3:5: error: invalid suffix "b11111111111111111111111111111110" on integer constant
./binary.cpp:4:5: error: invalid suffix "b11111111111111111111111111111100" on integer constant
./binary.cpp:5:5: error: invalid suffix "b11111111111111111111111111111000" on integer constant
./binary.cpp:6:5: error: invalid suffix "b11111111111111111111111111110000" on integer constant
./binary.cpp:7:5: error: invalid suffix "b11111111111111111111111111100000" on integer constant
./binary.cpp:8:5: error: invalid suffix "b11111111111111111111111111000000" on integer constant
./binary.cpp:9:5: error: invalid suffix "b11111111111111111111111110000000" on integer constant
./binary.cpp:10:5: error: invalid suffix "b11111111111111111111111100000000" on integer constant
./binary.cpp:11:5: error: invalid suffix "b11111111111111111111111000000000" on integer constant
./binary.cpp:12:5: error: invalid suffix "b11111111111111111111110000000000" on integer constant
./binary.cpp:13:5: error: invalid suffix "b11111111111111111111100000000000" on integer constant
./binary.cpp:14:5: error: invalid suffix "b11111111111111111111000000000000" on integer constant
./binary.cpp:15:5: error: invalid suffix "b11111111111111111110000000000000" on integer constant
./binary.cpp:16:5: error: invalid suffix "b11111111111111111100000000000000" on integer constant
./binary.cpp:17:5: error: invalid suffix "b11111111111111111000000000000000" on integer constant
./binary.cpp:18:5: error: invalid suffix "b11111111111111110000000000000000" on integer constant
./binary.cpp:19:5: error: invalid suffix "b11111111111111100000000000000000" on integer constant
./binary.cpp:20:5: error: invalid suffix "b11111111111111000000000000000000" on integer constant
./binary.cpp:21:5: error: invalid suffix "b11111111111110000000000000000000" on integer constant
./binary.cpp:22:5: error: invalid suffix "b11111111111100000000000000000000" on integer constant
./binary.cpp:23:5: error: invalid suffix "b11111111111000000000000000000000" on integer constant
./binary.cpp:24:5: error: invalid suffix "b11111111110000000000000000000000" on integer constant
./binary.cpp:25:5: error: invalid suffix "b11111111100000000000000000000000" on integer constant
./binary.cpp:26:5: error: invalid suffix "b11111111000000000000000000000000" on integer constant
./binary.cpp:27:5: error: invalid suffix "b11111110000000000000000000000000" on integer constant
./binary.cpp:28:5: error: invalid suffix "b11111100000000000000000000000000" on integer constant
./binary.cpp:29:5: error: invalid suffix "b11111000000000000000000000000000" on integer constant
./binary.cpp:30:5: error: invalid suffix "b11110000000000000000000000000000" on integer constant
./binary.cpp:31:5: error: invalid suffix "b11100000000000000000000000000000" on integer constant
./binary.cpp:32:5: error: invalid suffix "b11000000000000000000000000000000" on integer constant
./binary.cpp:33:5: error: invalid suffix "b10000000000000000000000000000000" on integer constant

代码:

static int s_bitCountMask[32] = {
0b11111111111111111111111111111111,
0b11111111111111111111111111111110,
0b11111111111111111111111111111100,
0b11111111111111111111111111111000,
0b11111111111111111111111111110000,
0b11111111111111111111111111100000,
0b11111111111111111111111111000000,
0b11111111111111111111111110000000,
0b11111111111111111111111100000000,
0b11111111111111111111111000000000,
0b11111111111111111111110000000000,
0b11111111111111111111100000000000,
0b11111111111111111111000000000000,
0b11111111111111111110000000000000,
0b11111111111111111100000000000000,
0b11111111111111111000000000000000,
0b11111111111111110000000000000000,
0b11111111111111100000000000000000,
0b11111111111111000000000000000000,
0b11111111111110000000000000000000,
0b11111111111100000000000000000000,
0b11111111111000000000000000000000,
0b11111111110000000000000000000000,
0b11111111100000000000000000000000,
0b11111111000000000000000000000000,
0b11111110000000000000000000000000,
0b11111100000000000000000000000000,
0b11111000000000000000000000000000,
0b11110000000000000000000000000000,
0b11100000000000000000000000000000,
0b11000000000000000000000000000000,
0b10000000000000000000000000000000,
};

#include <stdio.h>

int main(int argc, char *argv[])
{
for (int i = 0; i < 32; i++) {
printf("%d\n",s_bitCountMask[i]);
}
}

最佳答案

这意味着旧版本的 g++ 将不接受 0b000 二进制常量语法。您可以将数字改写为十六进制 - 二进制很容易一次转换为四位十六进制:

0xffffffff, 0xfffffffe, 0xfffffffc, 0xfffffff8,
0xfffffff0, 0xffffffe0, 0xffffffc0, 0xffffff80,
0xffffff00, 0xfffffe00, 0xfffffc00, 0xfffff800,
0xfffff000, 0xffffe000, 0xffffc000, 0xffff8000,
0xffff0000, 0xfffe0000, 0xfffc0000, 0xfff80000,
0xfff00000, 0xffe00000, 0xffc00000, 0xff800000,
0xff000000, 0xfe000000, 0xfc000000, 0xf8000000,
0xf0000000, 0xe0000000, 0xc0000000, 0x80000000

关于c++ - 错误 : invalid suffix "b11111111111111111111111111111111" on integer constant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8217564/

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