c - long int 的大小差异

标签 c

在 C 中使用 long int 时出现大小差异。以下代码:

#include <stdio.h>

void main()
{
    printf("%d\n", sizeof(long int));
}

给出 8 作为输出,因此 64 位用于表示 long int,对吧?但是:

#include <stdio.h>

void main()
{
    long int a;
    a = 1;
    a = a << 32;
    printf("%d\n", a);
}

给出 0(移动 31 给出 -2147483648,即 -2**31)。所以,看起来只使用了 4 个字节。这是什么意思?我使用的是没有标志的 gcc 4.4.5

最佳答案

您将其打印为普通整数:printf("%d")。尝试将其打印为长整数:printf("%ld ...")

关于c - long int 的大小差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14804831/

相关文章:

c - 链表的结构如何知道其自身类型的下一个指针的类型?

c - 是否可以在没有 root 访问权限的情况下在 linux 上使用 packet_mmap?

c - 霍斯普尔算法

c - 这是分割大文件的正确方法吗?

php - 将 C 哈希函数转换为 PHP : ezmlm_hash

java - 确定给定数字 N 是否可以成为具有所有 3 个整数边的直角三角形的斜边的算法

c - For 循环对数字之间进行计数

c - GCC 不会通过位掩码警告 0 或 1

c - 关于系统例程: OPEN of the unix file system

c - 马车抢劫(C语言)