我正在尝试这样做:

uint64_t key = 0110000010110110011001101111101000111111111010001011000110001110;


不起作用GCC


  警告:整数常量对其类型而言太大


知道为什么吗?

最佳答案

尽管draft C99 standarddraft C11 standard都不支持二进制文字,但是由于您特别提到了gcc,所以它有一个extension for binary literals,其中表示:


  整数常量可以写为二进制常量,由一系列数字“ 0”和“ 1”组成,前缀为“ 0b”或“ 0B”。这在以位级别运行很多的环境(如微控制器)中特别有用。


他们给出了以下示例(see it live):


  i = 0b101010;


看起来clang也支持an extensionsee it live):


  识别二进制文字(例如0b10010)。 Clang支持此功能,作为所有语言模式的扩展。


在C ++ 14 [lex.icon]之前,这在标准C ++中均不可用。

关于c - 如何在C中声明位?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21630824/

10-16 11:31