相关疑难解决方法(0)

为什么C字符文字而不是字符?

在C++中sizeof('a') == sizeof(char) == 1.这具有直观意义,因为它'a'是一个字符文字,并且sizeof(char) == 1由标准定义.

然而,在C中sizeof('a') == sizeof(int).也就是说,看起来C字符文字实际上是整数.有谁知道为什么?我可以找到很多关于这个C怪癖的提及,但没有解释为什么它存在.

c c++ sizeof char

101
推荐指数
7
解决办法
2万
查看次数

结果大小不同

为什么不n等于8以下功能?

void foo(char cvalue[8])
{
  int n = sizeof (cvalue);
}
Run Code Online (Sandbox Code Playgroud)

n 确实等于8这个版本的功能:

void bar()
{
  char cvalue[8];
  int n = sizeof (cvalue);
}
Run Code Online (Sandbox Code Playgroud)

c c++ sizeof

16
推荐指数
2
解决办法
1017
查看次数

理解32位C编译器中的sizeof(char)

(sizeof)char总是在32位GCC编译器中返回1.

但由于32位编译器的基本块大小为4,当基本大小为4字节时,char如何占用单个字节?

考虑以下因素:

struct st 
{
int a;
char c;
};
Run Code Online (Sandbox Code Playgroud)

sizeof(st)返回为8,默认块大小为4字节(因为分配了2个块)

我永远无法理解为什么sizeof(char)在分配大小为4的块时返回为1.

有人可以解释一下吗???

我会非常感谢任何回复解释它!

编辑:'bits'的拼写错误已更改为'bytes'.我对第一次编辑的人抱歉.我回滚了编辑,因为我没有注意到你做的改变.感谢所有那些指出必须改变的人,尤其是@Mike Burton,因为他们对这个问题进行了抨击,并且@jalf似乎对我对概念的理解得出了结论!

c c++ sizeof

11
推荐指数
3
解决办法
2万
查看次数

标签 统计

c ×3

c++ ×3

sizeof ×3

char ×1