C/C+中字符(A)的大小

C/C+中字符(A)的大小

C和C+中字符的大小是多少?据我所知,C和C+中字符的大小都是1字节。

在C中:

#include <stdio.h>int main(){
  printf("Size of char : %d\n",sizeof(char));
  return 0;}

在C+中:

#include <iostream>int main(){
  std::cout<<"Size of char : "<<sizeof(char)<<"\n";
  return 0;}

没有任何意外,它们都给出了输出:Size of char : 1

现在我们知道字符被表示为'a','b','c','|'.。所以我把上面的代码修改为:

在C中:

#include <stdio.h>int main(){
  char a = 'a';
  printf("Size of char : %d\n",sizeof(a));
  printf("Size of char : %d\n",sizeof('a'));
  return 0;}

产出:

Size of char : 1Size of char : 4

在C+中:

#include <iostream>int main(){
  char a = 'a';
  std::cout<<"Size of char : "<<sizeof(a)<<"\n";
  std::cout<<"Size of char : "<<sizeof('a')<<"\n";
  return 0;}

产出:

Size of char : 1Size of char : 1

为什么sizeof('a')在C和C+中返回不同的值?


梦里花落0921
浏览 707回答 3
3回答

跃然一笑

在C中,字符的类型常量喜欢'a'实际上是int,大小为4(或其他一些依赖于实现的值)。在C+中,类型是char这是两种语言之间许多小差异之一。

犯罪嫌疑人X

正如保罗所说,这是因为'a'是intC,但achar在C+中。我在几年前写的文章中介绍了C和C+之间的具体区别,在:http://david.tribble.com/text/cdiffs.htm

拉丁的传说

在C语言中,字符的类型是INT和焦耳在C+中。这在C+中是必需的支撑功能过载..参见此示例:void&nbsp;foo(char&nbsp;c){ &nbsp;&nbsp;&nbsp;&nbsp;puts("char");}void&nbsp;foo(int&nbsp;i){ &nbsp;&nbsp;&nbsp;&nbsp;puts("int");}int&nbsp;main(){ &nbsp;&nbsp;&nbsp;&nbsp;foo('i'); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}产出:char
打开App,查看更多内容
随时随地看视频慕课网APP