我在某些64位系统上听到过大约16位长的char类型。英特尔64(EM64T)系统上char类型的大小是多少?
答案 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:
char
定义为8位(见第3.1.2节)。char
定义为8位(请参阅Types and Storage -> Scalar Types)。但是C standard 允许“byte”大于8位,char
是“byte”(就C标准而言)根据定义;这样的平台确实存在,e.g. some DSPs。
答案 2 :(得分:1)
这不依赖于ISA,而是依赖于ABI。据我所知,没有系统为x64程序定义char
的1个字节。至少Windows,Linux和FreeBSD没有。
官方x86-64文档还指定了1个字节。