我正在尝试这样做:
uint64_t key = 0110000010110110011001101111101000111111111010001011000110001110;
不起作用
GCC
说警告:整数常量对其类型而言太大
知道为什么吗?
最佳答案
尽管draft C99 standard和draft C11 standard都不支持二进制文字,但是由于您特别提到了gcc
,所以它有一个extension for binary literals,其中表示:
整数常量可以写为二进制常量,由一系列数字“ 0”和“ 1”组成,前缀为“ 0b”或“ 0B”。这在以位级别运行很多的环境(如微控制器)中特别有用。
他们给出了以下示例(see it live):
i = 0b101010;
看起来clang
也支持an extension(see it live):
识别二进制文字(例如0b10010)。 Clang支持此功能,作为所有语言模式的扩展。
在C ++ 14 [lex.icon]之前,这在标准C ++中均不可用。
关于c - 如何在C中声明位?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21630824/