相关疑难解决方法(0)

在64位计算机上应该是sizeof(int)应该是什么?

可能重复:
int,long等
的大小int的大小是否取决于编译器和/或处理器?
什么决定整数的大小?

我正在使用一64-bit台机器.

$ uname -m
x86_64
$ file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
$ 
Run Code Online (Sandbox Code Playgroud)

当我运行以下程序时,我得到了sizeof(int)as 4-bytes.

#include <stdio.h>

int main(void)
{
    printf("sizeof(int) = %d bytes\n", (int) sizeof(int));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我运行一个16-,32-64-位机,那么不就意味着一个大小integer16-,32-64-分别位?

在我的机器上,我找到了WORD_BITIS 32.它不应该6464-bit机器上吗?

$ getconf WORD_BIT
32 …
Run Code Online (Sandbox Code Playgroud)

c c++ sizeof

65
推荐指数
4
解决办法
15万
查看次数

sizeof(enum)== sizeof(int),总是吗?

sizeof(enum)== sizeof(int),总是吗?

  • 还是编译器依赖?
  • 这是错误的,因为编译器针对字长度(内存对齐)进行了优化,即y int是特定编译器上的字大小?如果我使用枚举,这是否意味着没有处理惩罚,因为它们将是字对齐的?
  • 如果我将所有返回代码放在枚举中是不是更好,因为我显然不担心它获得的值,只检查返回类型时的名称.如果是这种情况,#DEFINE会更好,因为它可以节省内存.

通常的做法是什么?如果我必须通过网络传输这些返回类型,并且必须在另一端完成某些处理,那么您更喜欢枚举/ #define/const ints.

编辑 - 只是检查网络,因为编译器不象征性地链接宏,人们如何调试,比较整数值与头文件?

来自答案 - 我在下面添加这一行,因为我需要澄清 -

"因此它是实现定义的,而sizeof(枚举)可能等于sizeof(char),即1."

  • 这是否意味着编译器检查枚举中的值范围,然后分配内存.我不这么认为,当然我不知道.有人可以解释一下"可能是什么".

c enums const c-preprocessor

58
推荐指数
4
解决办法
6万
查看次数

标签 统计

c ×2

c++ ×1

c-preprocessor ×1

const ×1

enums ×1

sizeof ×1