Intel 64(EM64T)系统上char类型的大小

时间:2011-03-27 23:23:10

标签: c++ c 64-bit

我在某些64位系统上听到过大约16位长的char类型。英特尔64(EM64T)系统上char类型的大小是多少?

3 个答案:

答案 0 :(得分:3)

char类型在每个实现上都有CHAR_BIT位。不要忘记#include <limits.h> :)
C中,char始终是一个字节,因为字节的大小取决于实现。

#include <limits.h>
#include <stdio.h>
int main(void) {
    printf("A char is %d bits wide (*).\n", CHAR_BIT);
    puts("(*) in this implementation");
    puts("    with the options used for compilation");
    puts("    ...");
    return 0;
}

答案 1 :(得分:3)

在EM64T / AMD64系统上通常使用两个64位ABI:

但是C standard 允许“byte”大于8位,char是“byte”(就C标准而言)根据定义;这样的平台确实存在,e.g. some DSPs

答案 2 :(得分:1)

这不依赖于ISA,而是依赖于ABI。据我所知,没有系统为x64程序定义char的1个字节。至少Windows,Linux和FreeBSD没有。

官方x86-64文档还指定了1个字节。