Linux C数据类型

一、Linux C数据类型

所谓的“数据类型”就是该数据自身的一种属性,用于说明数据的类型,以告诉编译程序,要在内存中为该数据分配多少个字节的存储空间。不同类型的数据所占用的存储区域大小不同,这个区域的字节数就是这种数据类型的”长度“。C++中的数据类型和C#中的没有太大区别。

Linux C的数据类型具体分析如图2-1所示。


图2-1


此外,Lnux C中的数据还有常量和变量之分,他们分别属于上述类型。

二、常量与变量

2.1  常 量

定义:在程序运行时,其值不能被改变的量。

常量类型:字符(character)常量,整数(interger)常量,实型(floating point)常量,和枚举常量四种类型。下面以一个例子来对比各种数据类型之间的区别。

printf("I am:%c\nI am:%d\nI am:%f",'@',19,3.14);输出结果为:

I am:@

I am:19

I am:3.140000

从输出的结果发现,要输出的三项内容并没有原样输出,而是分成了三行输出,这要归功于“\n”,他表示一个换行符。输出指令遇到他就会换行再输出,并且“\n”并不出现在最后的输出结果中。从输出结果我们还可以给发现,整型和实数有着不同的表达式。%c对应着字符型数据类型。%d对应整型数据的输出。%称为格式化字符串,他后面加上字母c、d、f分别表示字符型,整型和浮点型数据。

2.2变 量

定义:在程序的执行过程中值可以发生变化的量称为变量。Linux C 的变量遵循“先定义,后使用”的原则,即变量在使用前,都与要先对其进行定义。在定义时系统就会为变量分配固定的内存,并按照变量名对其访问。

一个变量通常包含以下两个要素

1.变量名:

每一个变量都有一个名字,即变量名。变量的命名还应遵循标识符命名规则。

变量的定义一般为:

[修饰符]  类型说明符 变量名列表;

定义变量时应注意以下几点:

  1. 变量定义应该位于函数体的数据描述部分。
  2. 类型符用来说明变量的类型,如int、float、double、char等
  3. 修饰符部分可选,如int有long short 和unsigned等类型,可省略。
  4. 修饰符和类型符决定了变量的类型。由于变量所表示的数据类型可以是除void外任意类型的数据,因此变量在内存中所占的存储空间大小根据数据类型的不同而有所别。每一个变量有且只能有一种类型,所以变量的类型一旦确定,该变量在内存中所占的字节数也就确定了。在对变量进行运算时,编译系统通过检查变量的类型来判断运算是否合法。
  5. 变量列表部分表示对要定义的变量的变量名进行列表,如果同时定义多个相同类型的变量,各个变量名中间用逗号隔开
  6. 变量定义的每一项用空格隔开。
  7. 用分号结束变量的定义。

例如:int a,b;  float  num;

2.变量值

在程序运行过程中,变量值存储于内存中。

变量赋值的一般形式如下:

[修饰符]类型说明符  变量1=值1,变量2=值2,.....;

例如:

int a=2,b=3;/*给变量a赋值2,给变量b赋值3,*/

float num=1.2e10;/*给变量num赋值1.2×10^10*/

char c='V';/*给变量c赋值'V'*/

注意事项:

(1)有效字符。标识符只能由字母,数字下划线组成,且以字母或下划线开头,但是一般来说不推荐使用以下划线开头的标识符

(2)有效长度。标识符有效长度随。系统不同而有所区别,但至少前八个字符有效。如果超长,则超长部分会被舍弃。

例如:notebook_system和notebook_serise是两个不同的变量。但是他们的前8个字符相同,因此在某些系统中就会被认为是同一个变量。而无法区分,

(3)C语言的关键字不能作为变量名

Linux C对英文字母的大小写敏感,即同一字母的大小写,被认为是两个不同的字符。习惯上,为了增加可读性,变量名和函数名中的英文字母用小写。要养成标识符命名的良好习惯,即“见名知意”

2.3  整型数据

2.3. 1  整型常量

在Linux C 中有三种表示方式。

1,十进制形式。整型常量前没有前缀。

2,八进制形式(以数字0开头)例如:022,取值范围为0~7。八进制整型常量前没有符号,如果有则表示对其所代表的其值取反。

3,十六进制形式(以数字0加上大小写字母X开头)例如:0x25前缀为0x或者0X,取值范围0~9,A~F或a~f。十六进制整型常量前没有符号,如果有则表示对其所代表的其值取反。

2.3.2  整型变量

整型变量基本可分基本型,短整型,长整型三类。

(1)基本型。用int表示。例如int a,b

(2)短整型。用short int 或int表示。如:short a,b。

(3)长整型。用long int 或者long表示。如:long x,y。

2.4 实型数据

2.4.1 实型常量

实型常量即实数,又称浮点数,常用于表示小数或者超出整型值域的数值。在Linux C中有两种表示方法。

1,小数形式。小数形式的实型常量就是通常意义下的实数,由0~9的数字,小数点,和正负号组成。例如3.14、3.88.当某实型常量的整数部分或者小数部分为0时,0可以省略,如:10.  .125  但是小数点不能省略。并且也不能只有一个小数点。

2,指数形式。指数形式的实型常量有尾数部分、阶码标志(字母E或e)和阶码(指数部分)组成。其一般形式为aEn(a为尾数,n为阶码)。其值为a*10n次方。如果十进制1200.0用指数形式表示,为1.2e3,其中1.2称为尾数,3为指数。指数形式适用于表示较大或者较小的实数。

另外,同一实数可以用不同的尾数和指数表示。如1.2e3和0.12e4都表示1200.0。尾数部分必须有数字,指数部分必须是整数。

2.4.2  实型变量

实型变量分单精度和双精度两类,单精度用float类型说明符表示,双精度用double说明符类型表示,通常用于很大的数值或运算,

float a,b;   /**定义两个单精度类型的a,b*/

double a,b /*定义两个双精度类型的a,b**/

计算机存储的数值不能太大,也不能太小,否则都无法表示,超出正常范围叫溢出,相应的有上溢和下溢。

2 . 5 字符型变量

2.5.1 字符常量

一对单引号括起来的单个字符。这些字符通常是ASCII码字符,他们的值即为该字符的ASCII值,例如‘a’、'?' 、'1'。

字符常量具有以下特点:

(1)字符常量只能用单引号括起来,不能用双引号或其他符号。

(2)字符查常量只能是一个字符而不是字符串。

(3)字符可以使字符集中的任意字符

单字符常量可以有以下几种表达方式:

(1)直接型式。‘q’'1'  等

(2)八进制形式。'\ddd',其中“ddd”表示1~3位八进制数。其值代表的是某字符的ASCII值。“\”是转义符,例如"\101”(等于‘A’)

(3)十六进制形式。形式为格式为"\xhh"其中hh表示1~2位十六进制数,其值代表的是某字符的ASCII值。“\”是转义符,“X”是十六进制的前缀。例如:“\x41”(等于‘A’)。

(4)转义字符。就是以反斜杠“\”开头的转义字符。

  void main()

{

     printf("\x4F\x4B\x21\n");   等价于printf("OK!\n")

}

转义字符具有特定的含义,不同于字符原有的意义。常用转义符如下表所示:


使用转义符需要注意以下几点:

(1)转义字符只能使用小写字母,每个转义字符被看做一个字符。

(2)在Linux C中,对不可打印的字符,通常用转义字符来表示。

2..5.2 字符型变量

字符型变量类型说明符一般是char,一般会占用一个字节的内存单元。

例如: char c1,c2

2.6. 符号常量

如果在程序中多次用到一个常量,那么在修改这个常量的时候,就需要进行多处改动。这样在程序中就可以用符号来代替这个常量,这种符号就称为常量符号。符号常量同变量一样,在使用之前必须先定义,其定义格式一般为:

#define 标识符  常量

例如:  #define PI  3.14

符号常量在使用时应注意:

(1)为了与变量名区分,符号常量名一般用大写字母表示。

(2)常量替换时不做语法检查,如果程序有错,只有在对自己替换后的源程序进行编译时才会发现。

(3)常量定义是一种编译预处理命令,因此不必在行末加分号。如果加了分号,会连同分号一起进行替换。

可以看出Linux C 的数据包含整型,实型,字符型等多种类型,如果要对这些不同类型的数据进行运算,就需要先将这些类型转换为同一类型,那么下一篇将讲解数据类型之间的转换

猜你喜欢

转载自blog.csdn.net/songyayaya/article/details/79650663