内容正文:
《C语言程序设计》
(清华大学出版)
同步教学
运算符与表达式
第4章
……
运算符:对数据进行操作的符号(如+、-、*、/)
表达式:使用运算符将运算对象连接起来的式子
如:3+2*a
(1)表达式有确定的值:根据优先级和结合性进行计算。
(2)括号可以改变优先级: (3+2)*a
(3)表达式的书写规则:
表达式必须写在同一行中
只能使用圆括号
如:(ax+)
可以写作:1.0/2*(a*x+(b+x)/(a+x))
ⅷ晫仌
3
第四章 运算符与表达式
4.1 算术运算符和算术表达式
4.2 自增、自减运算
4.3 位运算
4.4 赋值运算
4.5 关系表达式与逻辑表达式
4.6 条件表达式与逗号表达式
4.1 算术运算符和算术表达式
运算符 表达式
+ 3+5、+3
- 5-2、-3
* 3*5
/ 3/2 (结果为1)
3/2.0 , 3.0/2 , 3.0/2.0 (结果为1.5)
% (求余) 7%4 (结果为3)
-9%5 (结果为- 4)
9%(-5) (结果为 4 )
2.0%3 (错误 , 2.0不是整数)
字符以其ASCII码参加运算:
'a'+1 为 98
'b'-'a' 为 1
'8'-'0' 为 8
a/10+a%10 (如a=24,则结果为6)
(b%100)/10 (如b=4321,则结果为2)
例如:设a为两位整数,求其各位数字之和。
又如:求一个整数 b 的十位上的数字。
字符 ASCII码 字符 ASCII码
A 65 a 97
B 66 b 98
C 67 c 99
D 68 d 100
E 69 e 101
F 70 f 102
G 71 g 103
H 72 h 104
I 73 i 105
J 74 j 106
K 75 k 107
L 76 l 108
M 77 m 109
N 78 n 110
O 79 o 111
P 80 p 112
Q 81 q 113
R 82 r 114
S 83 s 115
T 84 t 116
U 85 u 117
V 86 v 118
W 87 w 119
X 88 x 120
Y 89 y 121
Z 90 z 122
字符 ASCII码
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是( ).
1
2
2.0
2.5
A
B
C
D
提交
单选题
1分
若已定义x和y为double类型,则表达式x=1,y=x+3/2.0 的值是( ).
1
2
2.0
2.5
A
B
C
D
提交
单选题
1分
算术运算中的类型转换
自动转换
强制类型转换
自动转换
double
float
long
unsigned
int
char,short
低
高
例如:2+’a’+1.5
2+ 97+1.5
99+1.5
99.0+1.5
100.5
强制类型转换
一般形式为:
(类型名)表达式
例如:
(double)x (将 x转换成 double类型)
(double)x/y (将 x转换成double类型,再与y相除)
(int)3.14%2 (即3%2)
设f是单精度实型,i是双精度实型,则表达式10+'a'+i*f值的 数据类型为( ).
int
float
double
不确定
A
B
C
D
提交
单选题
1分
如何求一个整数每一位上的数字
注意整数相除取整
比如1+1/2+1/3+1/4+……+1/n
作业:将一个四位整数的个位与千位交换,百位与十位交换。
1234—>4321
4.2 自增、自减运算
如 i=3; j=++i; j:4,i:4
如 i=3; j=i++; j:3,i:4
--i i的值先减1,后使用
i-- i的值先使用,后减1
运算符
++
--
使用格式
++i i的值先加1,后使用
i++ i的值先使用,后加1
执行下列语句后变量x和y的值是( ). y=10;x=y++;
x=10,y=10
x=11,y=11
x=10,y=11
x=11,y=10
A
B
C
D
提交
单选题
1分
3+a++,若a的初值为6,则表达式值为?a的值为?
9,7
9,6
10,7
10,6
A
B
C
D
提交
单选题
1分
++x*y-z,若x,y,z的值分别为3,4,5,则表达式和x的值最后分别为?
11,4
11,3
7,4
7,3
A
B
C
D
提交
单选题
1分
4.3 位 运 算
六 种位运算符
& 按位与运算符
| 按位或运算符
^ 按位异或运算符
<< 二进制左移运算符
>> 二进制右移运算符
~ 按位取反运算符
按位与运算 (&)
当对应位均为1时,结果为1;否则为0。
例如,12&10的运算如下:
12 : 00001100
& 10 : 00001010
_________________
结果: 00001000
作用:保留某一位,用1和相应位进行与运算。
按位或运算 ( | )
对应位均为0时,结果为0;否则结果为1。
例如:
0123 :01010011
| 014 :00001100
0123|014 :01011111
作用:指定某一位的值为1。
按位异或运算 (^)
当对应位相同时,结果为0;否则为1。
例如:
00110011
^ 11000011
11110000
按位取反运算 (~)
使每一位上的0变1;1变0。
例如:~0115是将八进制数115按位求反。
即:
~ 01001101
_______ ________
结果:10110010
左移运算 (<<)
例如:
char a=6, b;
b=a<<2;
用二进制数如下:
a :00000110 (a=6)
b=a<<2 :00011000 (b=24)
返回目录
short a=-071400,b;
b=a>>2;
符号位
↓
a的二进制原码表示 : 1111001100000000
a的二进制反码表示 : 1000110011111111
a的二进制补码表示 : 1000110100000000 (机内存储形式)
b=a>>2 : 1110001101000000 (b的二进制补码表示)
b的二进制反码表示 : 1110001100111111
b的二进制原码表示 : 1001110011000000
b的八进制数 : - 016300
右移运算 (>>)
右移时,右端 (低位)移出的二进制数舍弃;
左端 (高位)移入的二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补1。
24
若x=2,y=3则x&y的结果是( ).
0
2
3
5
A
B
C
D
提交
单选题
1分
若a=1,b=2则 a|b的值是( ).
0
1
2
3
A
B
C
D
提交
单选题
1分
在位运算中,操作数每左移一位,其结果相当于( ).
操作数乘以2
操作数除以2
操作数除以4
操作数乘以4
A
B
C
D
提交
单选题
1分
感谢观看
28
$$