c语言数据自动转化规则,C语言基础(二)数据运算及类型转换规则

2.1运算符和表达式

C语言中有丰富的运算符:赋值运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、逗号运算符等

表达式是由运算对象和运算符组合起来的式子,且必须符合C语言的语法规则

表达式求值时应根据运算符的优先级和结合性

2.1.1赋值运算符及赋值表达式

赋值运算符:=

赋值表达式:变量=表达式[由赋值运算符连接的式子,把右边表达式的值赋给左边的变量]

例如:

int i, j, k;

i= 0;

j =i +1;

说明:赋值运算符具有右结合性,表达式可以连续赋值。

例如:i = j = k就等价于j = k; i = j;这两条语句。

2.1.2算术运算符及算术表达式

C语言提供了如下算术运算符:加(+)、减或取负(-)、乘(*)、除(/)、取模或求余(%)、自增(++)和自减(――)7种。

算术表达式:由算术运算符连接起来的表达式称为算术表达式。

其中加(+)、减或取负(-)、乘(*)三种运算和一般数学中的运算规则一样;

除(/):当除数和被除数都是整型数据时,其结果只能是整型。

例如:7/2=3;而不是 7/2=3.5;[只有当除数或被除数中有一个是实型时,其结果才是实型]

取模或求余(%):只能对整型数据进行运算。

自增(++)和自减(――):

1)只能对简单变量类型进行运算,常量和表达式不能做这两种运算。

如5――,(x+y)++都是不合法的;

2)既可以出现在变量的右边,又可以 出现在变量的左边。必须注意它们的差别:

x++:在使用变量x之后再将x的值加1;

++x:在使用变量x之前先将x的值加1;

x――:在使用变量x之后再将x的值减1;

――x:在使用变量x之前先将x的值减1;

例如:int x = 1,y;

y = ++x;

printf(“\nx=%d,y=%d”,x,y);

运行结果是:

x = 2,y = 2

2.1.3关系运算符及关系表达式

C语言中有如下关系运算符:大于(>)、小于(=)、小于等于(<=)、等于(= =)、不等于(!=)

关系表达式:用关系运算连接几来的式子。

说明:

1)关系运算就是通过对操作数的值进行比较来判定是否符合条件,所以,关系表达式的结果只有两种即“真”和“假”,其中“真”用“1”表示、“假”用“0”表示。

2)一般字符的比较依据为字符的ASCII码。

例如:int a=(3>5);结果:a=0

2.1.4逻辑运算符及逻辑表达式

C语言提供了3种逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!)。

逻辑表达式:用逻辑运算符连接起来的式子。

说明:

1)逻辑与(&&)、逻辑或(||)是双目运算,具有左结合性,逻辑非(!)是单目运算符,具有右结合性。

2)在逻辑表达式中,是根据形式逻辑的原理,通过逻辑运算符来对操作数的“真”(即非0值)“假”(即0值)值进行组合,其结果仍为逻辑“真”或“假”。

3)逻辑运算符的求值规则:

iji&&ji|| j!i

非0  非0    1      1      0

非0  0     0      1      0

0   非0    0      1      1

0   0     0      0      1

例如:int m = 2, n = 3;

则m&&n的值为1;

m | | n的值为1;

!m的值为0。

2.1.5条件运算符及条件表达式

条件运算符:?:

它是C语言中唯一的一个三目运算符,用来对条件求值,具有右结合性。

条件表达式:用条件运算符连接起来的式子。

其形式如下:

表达式1?表达式2:表达式3

运算规则:先计算表达式1,如果结果为真,则计算表达式2,并把表达式2的值作为整个表达式的值。否则,如果表达式1的值为假,则计算表达式3,并把表达式3的值作为整个表达式的值。

例如:要得到变量a与b之间的最小值,可以表示成:

min = (a < b) ? a : b; //如果a < b,则min=a,否则a>=b,则min=b

2.1.6逗号运算符及逗号表达式

逗号表达式是用逗号(,)把多个表达式连接起来组成一个表达式,求值时按从左到右的顺序。其形式为:

表达式1,表达式2,……,表达式n

执行过程为:先对表达式1求值,再对表达式2求值,……再对表达式n求值,并把表达式n的值作为整个逗号表达式的值。

优先级:逗号运算符在所有运算符中的优先级最低,具有从左到右的结合性。

特别说明:逗号并不是在任何地方出现都是逗号表达式,它也可以作为分隔符,要注意分清。

2.2运算符的优先级和结合性

[当一个表达式由多个运算符组成时,如何能得到正确结果,这就是运算符的优先级和结合性问题]

2.2.1数据类型转换规则

[不同的基本数据类型的变量混合运算时,怎样确定该表达式的数据类型,这就是如何进行类型转换的问题]

数据类型转换分自动转换和强制转换两类。

1)自动转换:这类转换由C编译系统自动完成;其原则是保证数据的精度不降低,所以,数据转换按数据存储长度增长的方向进行。

2)强制转换:将结果转换为自己所希望的数据类型。形式为:

(类型名)(表达式)——即可将表达式的类型转换为指定的(类型名)

说明:强制转换只对本次运算有效,并不改变变量本身定义时所规定的类型。

例如:float x = 4;

int y = 2;

进行运算:(int)x / y其结果为2;但运算后x的类型仍为实型,而不会变成int型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值