在C中,sizeof是以八位字节或字符为单位测量其结果吗?

oct*_*ian 4 c sizeof char

虽然a char是由1 byte我所知道的所有编译器组成的,但我的印象是C不能保证a的长度char,它只能保证char < short < long.因此,我假设sizeofchars中测量其结果,以便从正在运行的平台中抽象出来.为了使它更通用,我认为这size_t是根据的定义char.

但是现在,据我所知,在google上搜索,似乎sizeof确实会返回其结果bytes.

我的假设是完全错误还是除此之外还有更多错误?

Dav*_*nan 10

使用的单位sizeofchar.该语言的一个公理是sizeof(char) == 1.

因此,对于char大于8位的系统,sizeof不以8位为单位进行测量.


nos*_*nos 7

单位sizeof是字符.

但是,C将字节定义为char的大小,而不是字节等于8位的更常见用法.

如果您想知道char的位数,请使用CHAR_BIT常量in<limits.h>