Swift51.com
麦子学院 头像
麦子学院  2016-09-22 14:48

C语言中有哪些变量?

回复:0  查看:2321  

前言

  熟悉嵌入式的童鞋应该都知道,嵌入式开发是离不开C语言的,在面试嵌入式相关岗位,笔试环节经常遇到C语言各类型变量所占字节数的问题,这里做一个总结好了。

  类型

  常见的有charintlongshortfloatdouble及指针等.

  字符类型

  这里单只charchar变量在内存中存储的是字符对应的ASCII码值。所以长度也是固定的,为1个字节。

  整数类型

  查了资料发现对各个类型的整数占用字节数是有一个规定的,虽然1632位或者64位的机子各种类型所占用的长度并不一样。规则如下:

  short 至少占用2个字节。

  int 建议为一个机器字长。32位环境下机器字长为4字节,64位环境下机器字长为8字节。

  short 的长度不能大于 intlong 的长度不能小于 int

  所以说,short并不一定短,long并不一定短,有可能都和int一样长。

  浮点数(小数)

  C中浮点数有两种,floatdouble,不像整数,小数的长度始终是 固定的 ,float占用 个字节,double占用 个字节。

  指针

  C中指针即为地址,所以编辑器的寻址空间则是指针的地址范围。所以指针变量在32位机器的寻址空间为2^32,要将所有地址都表示出来则需要为4个字节长度,所以要占用4个字节长度。同理64位的编译器则需要8个字节长度。

  查看所占用的长度

  可以使用 sizeof() 来查看所占用的长度,如下:

  #include

  #include

  using namespace std;

  int main(int argc, const char * argv[]) {

  // insert code here...

  char *p;

  cout<<"char: "<<sizeof(char)<<endl;

  cout<<"int: "<<sizeof(int)<<endl;

  cout<<"short: "<<sizeof(short)<<endl;

  cout<<"long: "<<sizeof(long)<<endl;

  cout<<"*: "<<sizeof(p)<<endl;

  cout<<"float: "<<sizeof(float)<<endl;

  cout<<"double: "<<sizeof(double)<<endl;

  return 0;

  }

  输出结果如下:

  char: 1

  int: 4

  short: 2

  long: 8

  *: 8

  float: 4

double: 8

 

  文章来源:Linux公社