c - 如何在 C 语言中使用 uint64_t

标签 c

<分区>

#include <stdio.h>
#include <stdint.h>

int main(){
    uint64_t a = 1 << 63;
    /* do some thing */
    return 0;
}

$ gcc -Wall -Wextra -std=c99 test.c -o test  
warning: left shift count >= width of type [-Wshift-count-overflow]

问:uint64_t应该是64位宽度,为什么左移会溢出?

最佳答案

1是一个 int这在您的平台上只有 32 位,或者可能是 64 位但已签名。

使用 (uint64_t)1 << 631首先是 64 位无符号整数。 (或者 ((uint64_t)1) << 63 如果您愿意)

关于c - 如何在 C 语言中使用 uint64_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43060408/

相关文章:

c - 2**2 和 2**0 的 "Algn"在 objdump 的输出中意味着什么?

c - C 中使用 pipe()、execlp() 和 dup() 的三重管道

c - 我是否错误地使用了 fscanf?

c++ - 包含许多 "if"的关键循环,其输出为常量 : How to save on condition tests?

c++ - 为什么映射页面不发送 sigsegv?

c - 基本C程序,巴比伦算法

c - 如何在 C 中声明可变大小的数组?

c - 如何跨多个文件访问和修改全局变量?

c - 怎么了这让我发疯

c - 当 CPU 需要大于 0xC0000000 的地址时,如何执行地址转换(virt->phy)?