第2章 数据类型与运算符(5)

2020-02-21 22:45

博学谷——让IT教学更简单,让IT学习更有效

int x = y = z = 5;

// 这样写是错误的

2、在表2-11中,除了“=”,其他的都是特殊的赋值运算符,接下来以“+=”为例,学习特殊赋值运算符的用法,示例代码如下:

int x=2; x+=3;

上述代码中,执行代码x += 3后,x的值为5。这是因为在表达式x+=3中的执行过程为: (1)将x的值和3的执行相加。 (2)将相加的结果赋值给变量x。

所以,表达式x+=3就相当于x = x + 3,先进行相加运算,再进行赋值。-=、*=、/=、%=赋值运算符都可依此类推。 为了帮助大家更好地学习赋值运算符,接下来,通过一个案例来了解赋值运算符的执行流程,具体如例2-10所示。 例2-10

1 #include 2 void main() 3 { 4 5 6 7 }

int num = 6;

num -= num *= num + num; printf(\

运行结果如图2-16所示。

图2-16 运行结果

从图2-16中可以看出,运算后变量num的值被打印出来了。程序在处理到“num -= num *= num + num”时,先处理“num + num”,返回12;然后运算“num *= 12”,num赋值为72,返回72;最后运算“num -= 72”,num赋值为0,最终输出num的值为0。

?多学一招:运算符的结合性

运算符的结合性指同一优先级的运算符在表达式中操作的结合方向,即当一个运算对象两侧运算符的优先级别相同时, 运算对象与运算符的结合顺序。大多数运算符结合方向是“自左至右”。示代码如下:

a-b+c;

上述代码中表达式“a- b+c”,b两侧有-和+两种运算符,其优先级相同,按先左后右的结合方向,b先与减号结合,执行a - b的运算, 然后再执行加c的运算。除了自左至右的结合性外,C语言有一些运算符遵循的是自右向左的结合性,例如三目运算符、赋值运算等。以赋值运算符为例,具体代码如下所示:

a=b+c;

上述代码中,先执行b+c,然后将执行结果赋值给a。

2.4.4 关系运算符

关系运算符用于对两个数值或变量进行比较,其结果是一个逻辑值(“真”或“假”),如“5>3”,其值为“真”。C语言的关系运算中,“真”用数字“1”来表示,“假”用数字“0”来表示。表2-12列出了C语言中的关系运算符及其用法。

表2-12 关系运算符

运算符 ==

运算 相等于 范例 4 == 3 结果 0 21

博学谷——让IT教学更简单,让IT学习更有效

!= < > <= >= 请思考一下下面表达式的结果:

printf(\

不等于 小于 大于 小于等于 大于等于 4 != 3 4 < 3 4 > 3 4 <= 3 4 >= 3 1 0 1 0 1 上述表达式结果为0。该表达式首先计算5 <= 4,返回0,再计算0 > 1,返回0,最终得到的结果自然就是0。需要注意的是,在使用关系运算符时,不能将关系运算符“==”误写成赋值运算符“=”。

2.4.5 逻辑运算符

逻辑运算符用于判断数据的真假,其结果仍为“真”或“假”。表2-13列举了C语言中的逻辑运算符及其范例。

表2-13 逻辑运算符

运算符 运算 范例 结果 如果a为假,则!a为真 ! 非 !a 如果a为真,则!a为假 && 与 a&&b 如果a和b都为真,则结果为真否则为假 如果a和b有一个或一个以上为真, || 或 a || b 则结果为真,二者都为假,结果为假 当使用逻辑运算符时,有一些细节需要注意,具体如下: 1、逻辑表达式中可以包含多个逻辑运算符,例如,!a||a>b 2、三种逻辑运算符的优先级从高到低依次为:!、&&、||

3、运算符“&&”表示与操作,当且仅当运算符两边的表达式结果都为真时,其结果才为真,否则结果为假。如果左边为假,那么右边表达式是不会进行运算的,具体示例如下:

a+b

若a=5,b=4,c=3,d=3,由于a+b的结果大于c,表达式a+b

4、运算符“||”表示或操作,当且仅当运算符两边的表达式结果都为假时,其结果为假。同“&&”运算符类似,如果运算符“||”左边操作数的结果为真,右边表达式是不会进行运算的,具体示例如下:

a+b

若a=1,b=2,c=4,d=5,由于a+b的结果小于c,表达式a+b

为了帮助大家更好地学习逻辑运算符,接下来,通过一个案例来了解逻辑运算符的执行流程,具体如例2-11所示。 例2-11

1 #include

22

博学谷——让IT教学更简单,让IT学习更有效

2 void main() 3 { 4 5 6 }

int a = 5, b = 6, c = 7, d = 8, m = 2, n = 2;

printf(\

运行结果如图2-17所示。

图2-17 运行结果

从图2-17中可以看出,运算后逻辑运算的值、变量m的值和变量n的值被打印出来了。该程序运行到逻辑运算符时,首先执行m=a>b,m赋值为0,返回m的值;然后逻辑运算符&&停止接下来的运算并返回0。此时逻辑运算返回0,m赋值为0,n的值不变,依然为2。

2.4.6 三目运算符

如果在条件语句中,只执行单个的赋值运算符时,通常可以使用“?:”,它是一个三目运算符,即有三个参与运算的表达式。 三目运算符的语法格式如下所示:

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

上面的表达式中,先求解表达式1,若其值为真(非0)则将表达式2的值作为整个表达式的取值,否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。

为了帮助大家更好地学习,接下来通过一个案例来了解三目运算符的使用,具体如例2-12所示。 例2-12

1 #include 2 void main() 3 { 4 5 6 7 }

int a = 6, b = 3, result; result = a > b ? a * b : a + b; printf(\

运行结果如图2-18所示。

图2-18 运行结果

从图2-18中可以看出,执行后变量result的值被打印出来了。该程序首先执行a>b,返回逻辑值真,接着执行符号“?”后面的语句,返回a * b的值并将其赋给变量result,此时result赋值为18并被打印出来。

注意:

1、条件运算符“?”和“:”是一对运算符,不能分开单独使用。

2、条件运算符的结合方向自右向左,例如a>b?a:c>d?c:d应该理解为a>b?a:(c>d?c:d),这也是三目运算符的嵌套情形,即其中的表达式3又是一个条件表达式。

2.4.7 逗号运算符

在C语言中,多个表达式可以写在一起,并用逗号分开。逗号运算符就是分割这些连在一起的表达式的运算符,其中用逗号分开的表达式的值先分

23

博学谷——让IT教学更简单,让IT学习更有效

别进行运算,最终返回最后一个表达式的值。逗号运算符的表达式如下所示:

(表达式1, 表达式2, 表达式3, ..., 表达式n);

程序将依次执行表达式1、表达式2、表达式3直至表达式n,并且最终返回表达式n的值。

为了帮助大家更好地理解逗号运算符,接下来,通过一个案例来了解逗号运算符的使用,具体如例2-13所示。 例2-13

1 #include 2 void main() 3 { 4 5 6 7 }

int a = 5, b;

b = (a++, 9 - 2, a + 3); printf(\

运行结果如图2-19所示。

图2-19 运行结果

从图2-19中可以看出,变量b的值被打印出来了。例2-13在程序执行时,首先计算a++,此时a自增为6;然后计算9 - 2;最后计算a + 3,结果为9,此时这是最后一个表达式,逗号运算符返回该表达式的值并赋给变量b。最终该程序打印出变量b的值为9。

2.4.8 位运算符

位运算符是针对二进制数的每个二进制位进行运算的符号,它是专门针对数字0和1进行操作的。C语言中的位运算符及其范例如表2-1414所示。

表2-14 位运算符

运算符 运算 范例 0 & 0 0 & 1 & 按位与 1 & 1 1 & 0 0 | 0 0 | 1 | 按位或 1 | 1 1 | 0 ~0 ~ 取反 ~1 0 ^ 0 0 ^ 1 ^ 按位异或 1 ^ 1 1 ^ 0

0 1 24

0 0 1 1 1 1 1 0 0 1 结果 0 0 博学谷——让IT教学更简单,让IT学习更有效

00000010<<2 << 左移 10010011<<2 01100010>>2 >> 右移 11100010>>2 11111000 01001100 00011000 00001000 接下来通过一些具体示例,对表2-14中描述的位运算符进行详细介绍,为了方便描述,下面的运算都是针对byte类型的数,也就是1个字节大小的数。

1、 与运算符“&”是将参与运算的两个二进制数进行“与”运算,如果两个二进制位都为1,则该位的运算结果为1,否则为0。

例如将6和11进行与运算,6对应的二进制数为00000110,11对应的二进制数为00001011,具体演算过程如下所示:

&

00000110 00001011

—————————

00000010

运算结果为00000010,对应数值2。

2、 位运算符“|”是将参与运算的两个二进制数进行“或”运算,如果二进制位上有一个值为1,则该位的运行结果为1,否则为0。具体示例如下:

例如将6与11进行或运算,具体演算过程如下:

|

00000110 00001011

—————————

00001111

运算结果为00001111,对应数值15。

3、 位运算符“~”只针对一个操作数进行操作,如果二进制位是0,则取反值为1;如果是1,则取反值为0。

例如将6进行取反运算,具体演算过程如下: ~ 00000110

—————————

11111001

运算结果为11111001,对应数值-7。

4、 位运算符“^”是将参与运算的两个二进制数进行“异或”运算,如果二进制位相同,则值为0,否则为1。

例如将6与11进行异或运算,具体演算过程如下:

^

00000110

00001011

—————————

00001101

运算结果为00001101,对应数值13。

5、 位运算符“<<”就是将操作数所有二进制位向左移动一位。运算时,右边的空位补0。左边移走的部分舍去。

例如一个byte类型的数字11用二进制表示为00001011,将它左移一位,具体演算过程如下:

00001011 <<1 ————————— 00010110

运算结果为00010110,对应数值22。

25


第2章 数据类型与运算符(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:提高守法意识 预防职务犯罪-农村基层组织人员职务犯罪预防警示教

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: