第二章 数据类型、预算符和表达式

2.2 C语言的数据类型
数据类型分为:1.基本类型 2.构造类型
3.指针类型 4.空类型
基本类型分为:1.整型 2.字符型
3.实型(浮点型)
构造类型分为: 1.数组类型 2.结构体类型
3.共同体类型 4.枚举类型
2.3 C语言的常量
2.3.1直接常量
直接常量又分为整型常量、实型常量、字符型常量和字符串常量。
1.整型常量
整型常量即整数,包括正整数、负整数和零。C语言中,整型常量可以用十进制、八进制和十六进制表示。
十进制表示:由数字0~9,正、负号组成,如369,-663等;
八进制表示:以0(数字0)为前缀,其后由数字0~7组成,如0163,036等;八进制数一般是无符号数。如0192、-011都是不合法的八进制常量。
十六进制表示:以0x或0X为前缀,其后由数字0~9和字母A~F(字母大小写均可)组成,如0x12cd,0X6Fa等。十六进制数一般是无符号数。
注意:(1)在一个整型常量后面加一个字母u或U,认为是unsigned int型,如246U。(2)在一个整型常量后面加一个字母1或L,认为是long int型,如12L。
2. 实型常量
实型常量即实数,又称为浮点数。C语言中,实数只能用十进制形式表示,实数的表示方法有两种:小数形式和指数形式。
(1)小数形式:由整数部分、小数点和小数部分组成,当整数部分或者小数部分为0时,可以省略不写,但是小数点不可省略。如12.345,3.,一.123等均为正确的实数。
(2)指数形式:由尾数部分、字母E或e和指数部分组成,格式为:士尾数E指数。如1.23E-2、3.14E+3等,它们表示的数值分别为1.23×102、3.14×10°注意:(1)以小数形式表示实数时,必须有小数点,并且小数点的前、后至少一边要有数字。(2)以指数形式表示实数时,字母E(或e)的前后必须有数字,并且指数部分只能是整数。如12.-E3、1.5E、E6都是不正确的实数。
在C语言中,实型常量默认为是double型的实数,如果在数的后面加字母f或F(如1.65f、654.87F),则认为是float型的实数。
3. 字符型常量
字符常量指单个字符,用一对单引号及其括号所语起的字有来表示,如写’a’、‘B’、=’$’、’?”都是合法的字符常量。在C语言中,字符常量有以下特点:
1)字符常量只能用单引号括起来,不能用双引号或其它括号。
(2)字符常量只能是单个字符,不能是字符串。
(3)字符可以是ASCT学符集中的任意字符,按ASCT码的大小,不同的字符之间存在着次序,以字符的ASCI码值按升序连续排列。如小写字母的ASCII码大于大写字母的ASCII码,大写字母的ASCII码大于数字字符的ASCII码。
使用字符常量时,每个字符在内存中占用一个字节,用于存储它的ASCI码值。所以C语言中的字符常量具有数值特征,可以像整数一样参加运算,此时相当于对字符的ASCII码进行运算。
4.字符串常量
字符串常量是由一对双引号"”括起来的零个或多个字符序列,字符串中可以使用空格字符、转义字符和其他字符,也可以使用汉字等文字符号。字符串中还可以使用空字符,如:” ”表示空串,即不包含任何字符。字符串常量在内存中占用一段连续的存储单元,系统自动在每个字符串的尾部加上\0’作为字符串的结束标志,因此,n个字符组成的字符串,在内存中要占用n+1个字节空间。可以使用sizeof运算符来计算字符串占用的内存空间大小。
2.4 C语言的变量
2.4.1变量的定义和使用
1.变量的定义
其定义格式:类型说明符 变量名表;
其中:(1)类型说明符必须是C语言中的有效数据类型,如int、float、double、char等,用于指定变量的类型,该类型决定了编译时分配给变量的内存单元的多少。
(2)变量名表可以由一个或多个变量名组成,各变量名之间用“,”分隔。变量名必须是合法的C语言标识符,变量名一般使用小写字母。
(3)变量的定义必须放在变量的使用之前,一般在函数体的开头部分进行定义。
在C语言中,基本数据类型包括char(字符型)、int(整型)、float(单精度浮点型)及double(双精度浮点型)等。不同的类型用于存放不同的数据,所需的存储空间也不相同。
2.变量的初始化
在C语言允许在定义变量的同时对变量赋值,这个过程称为变量的初始化。
对变量初始化时需注意:
(1)对一个变量赋初值之后,该值被存储在分配给该变量的内存空间中。
(2)不允许对多个未定义的同类和变能连续机的花,“x=y=3:”是不合法的,写成“int x=3,y=3;”。
(3)初始化时,一般应使“一”右边表达式的数据类型和“=”左边的变量的类型一致,如果不一致,系统会进行自动赋值转换。
(4)没有进行初始化的变量,其值是由定义时所使用的存储类型决定的。全局变量和static型变量的值是0或\0’,其它存储类型的局部变量的值是未知的。
3.变量的使用
变量定义之后,就可以在程序中使用。在程序中使用变量,称为变量的引用,如进行数值计算,数据处理等。使用变量时,应该先赋值,后引用。
在程序中可以通过初始化、赋值表达式或者输入函数scanf()变量赋值。
2.4.2 整型变量
一个整型变量用来保存整数。在C语言中,整型又可分为:短整型(short int)、整型(in)、长整型(long int)、无符号整型(unsiened int),无符号短整型(unsigned short int)和无符号长整型(unsigned long int)六种。
C标准没有规定各类整型数据所占内存的字节数,只要求短整型不长于整型,长整型不短于整型。某种类型的数据所占内存的大小随编译系统的不同而有差异,可以使用sizeof运算符计算某种数据类型占用内存的大小。
2.4.3 实型
C语言中实型变量分单精度(float型)和双精度(double型)两类。
2.4.4字符型变量
字符型变量的值是字符常量,即用单引号引起来的单个字符。字符型变量的类型说明符是char,其类型说明的格式和命名规则与整型变量相同。
由于字符常量在内存中占用一个字节,用于存储它的ASCII码值,所以C语言中的字符具有数值特征,可以像整数一样参加运算,允许对整型变量赋以字符值,也允许对字符变量赋以整型值。C语言在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。
2.5 运算符和表达式
2.5.1赋值运算符和赋值表达式
C语言中赋值运算符有“=”、“十= X 、“/=”和“%=”等。用赋值运算
符将运算对象连接而成的表达式称为赋值表达式。
1.简单赋值运算符
最简单的赋值运算符就是“=”,它的作用是将一个数值赋给一个变量。如r=2的作用是执行一次赋值操作(或称赋值运算)。把常量2赋给变量r。也可以将一个表达式的值赋给一个变量。
定义a,b,c为整型变量,但只对c进行了赋值操作,c的值为3。
如果对几个变量赋予同一个初值,应写成:
int a=b=c=3;
表示a,b,c,的初值都是3。如果写成下面的格式,则是错误的。
int a=b=c=3
2.复合赋值运算符
在简单赋值运算符前面加上算术运算符就构成
复合赋值运算符。
3.赋值表达式
在C语言中,赋值语句属于表达式语句。赋值表达式是由赋值运算符将一个变量和一表达式连接起来的式子所组成。
2.5.2算术运算符和算术表达式
1.基本的算术运算符
基本算术运算包括加、减、乘、除和求余等运算,其中加、减、乘、除和求余运算均为双目y=-3运算符,所谓双目运算符是指运算时需要两个操作数。
2.自增、自减运算符
C语言有两个特殊运算符“十十”和“一”。(1)++自增运算符,为单目运算符,其功能是使变量的值自加1。自增运算符有两种使用形式:
①前缀方式:用于变量前面,如“int a=++×;”它是“先计算,后使用”,即先将x的值自加1,然后将x的值赋给变量a。
②后缀方式:用于变量后面,如“inta=x十+;”它是“先使用,后计算”,即先将x的值赋给变量a,然后再将x的值自加1。
(2)一—自减运算符,为单目运算符,功能是使变量的值自减1,使用方法和自增运算符相似。
3. 算术运算符的优先级和结合性
C语言规定了运算符的优先级和结合性,单日运算符是右结合的,双目算术运算符是左结合的。算术运算符的优先级为:“十十、.__”“×、、%”>“十、一”,即单目运算符的优先级高于双目运算符,双目算术运算符中 、、%的优先级高于十、一。在优先级相同的情况下,按规定的“结合性”进行处理。
4.算术表达式
算术表达式是由算术运算符、运算对象和括号连接起来的式子,运算对象可以是常量、变量和函数等。
通常数学表达式均可写成C语言的算术表达式。
算术表达式使用注意:
(1)表达式中的乘号不能省略,且表达式中的所有字符均应写在同一行上。
(2)在表达其中走可以使用多层圆括号(不能使用中括号□和花括号()),但是要注意括号的配对。
2.5.3逗号运算符和逗号表达式
C语言中逗号“,”也是一种运算符,称为逗号运算符,其功能是把多个表达式连接起来组成一个表达式,称为逗号表达式。逗号表达式的一般形式为:表达式1,表达式2,···,表达式n
(1)逗号表达式的执行顺序是:从左到右依次计算每个表达式的值,并把最后一个表达式的值作为整个逗号表达式的值。如对于表达式“a=4,b=5,c=a+b”,首先计算a=4的值,结果为4,再计算b=5的值,结果为5,最后计算c=a+b的值,结果为9,则整个逗号表达式的值为9,该表达式执行完后,a=4,b=5,c=9。
(2)逗号运算符是双目运算符,其优先级最低,是左结合的。
(3)并非所有出现逗号的地方都为逗号表达式,如在变量说明语句中,以及函数参数表中逗号只是用作各变量之间的分隔符。
2.5.4求字节数运算符
运算符 sizcof用于计算数据类型所占的字节数,它是一个单目运算符,优先级高于双目运算符,其一般格式如下:
(1)sizeof(表达式)或sizeof 表达式
(2)sizeof(数据类型名)
2.6 数据类型转换
2.6.1 自动类型转换
不同类型的数据在一起运算时,编译系统会自动进行类型转换。进行自动转换的规则是:把占用内存空间少的(低级)类型向占用空间多的(高级)类型转换,以保证运算的精度。
2.6.2强制类型转换
强制类型转换是采用强制类型转换运算符将某种数据类型强制转换成指定的数据类型,其一般形式为
(类型说明符)(表达式)
功能:把表达式的运算结果强制转换成类型说明符指定的类型。
进行强制类型转换时需注意:
(1)需强制类型转换中的表达式一定要括起来,否则只对紧随括号后的量进行类型转换。(2)强制类型转换是一种不安全的转换,如果是从高级类型转换成低级类型,则会损失数据的精度。(3)强制类型转换并不改变表达式中变量的类型和值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值