【问题标题】:C Why is sizeof('a')=4 and sizeof(char)=1? [duplicate]C 为什么 sizeof('a')=4 和 sizeof(char)=1? [复制]
【发布时间】:2018-03-05 22:00:26
【问题描述】:

我有以下代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char * argv[]){
    printf("size of tab = %d\n", sizeof('\t'));
    printf("size of a = %d\n", sizeof('a'));
    printf("size of char = %d\n", sizeof(char));
}

输出:

size of tab = 4
size of a = 4
size of char = 1

为什么'a' 的大小和char 的大小不同。 'a' 不是 char 吗?

【问题讨论】:

  • sizeof('\t') 实际上是在计算int 的大小,其中int'\t' 的ASCII 值,sizeof('a') 的情况类似
  • 'a' 是一个int。 C 中的所有常量至少为int
  • 6.4.4.4 字符常量 p2 整数字符常量是一个或多个用单引号括起来的多字节字符的序列,如 'x'。 和 p10 整数字符常量的类型为 int。 6.5.3.4 sizeof ... 运算符 p4 当 sizeof 应用于类型为 char、unsigned char 或 signed char 的操作数(或限定版本)时其中)结果为 1。

标签: c size byte


【解决方案1】:

'a 是包含字符 a 的 int。 看看这些表达式的值:

sizeof((char) 'a');
char a = 'a';
sizeof(a);

【讨论】:

    猜你喜欢
    • 2012-01-29
    • 2014-05-25
    • 1970-01-01
    • 2011-01-16
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    相关资源
    最近更新 更多