文档介绍:C程序设计
Programming in C
西安电子科技大学计算机学院张淑平
这次课的主要内容
运算符和表达式
输入和输出
算术运算和表达式
五种基本的算术运算符号
+、-、*、/、%
若参与除运算的两个数都为整数,则商是整数,否则商是浮点数
使用整除取余运算符(%)时要求两个数都是整数
表达式(expression)
表达式由项(term)和运算符(operator)组成
项可以是常量、变量或函数调用(function call)
表达式可以加园括号,用于指示运算次序
好的表达式书写风格:在双目运算符两侧各加一个空格,以提高可读性
结合性和优先级
结合性是指当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。
左结合和右结合
优先级规定运算顺序
先乘除、后加减
先括号里再括号外
类型转换
自动的类型转换
编译系统自动进行,例如: + 5,将5转换为浮点型数据后进行相加运算
强制类型转换
由编程者明确指示,例如:(int)*76
(double)a /*将变量a的值转换成double型*/
(int)(x + y) /*将x+y的结果转换成int型*/
(float)5 / 2
等价于(float)(5)/2 /*将5转换成实型,再除以2*/
(float)(5 / 2)
赋值运算和赋值表达式
赋值(assignment)
赋值运算符:=,其作用是将一个数据赋给一个变量,形式为:变量= 表达式
例如:a = 3 /*将整数3赋值给变量a*/
a
a = 3
a
3
a = 8
a
8
为变量赋值将改变其值,原来的值不再保留
赋值表达式的值就是被赋值的变量的值
复合的赋值运算符
在赋值运算符之前加上一种运算符
例如:+=,其作用是先将运算符两边的数据进行相加运算,然后将结果赋给赋值号左边的变量
例如:a += 5 等价于 a = a + 5
a += 5
8
a
8
a
13
其他复合的赋值运算符
-=,*=,/=,%=, 等等
a *= b – 5 等价于 a = a *(b – 5)
自增、自减运算符
自增、自减运算符的作用是使变量的值增1或减1
自增运算符:++
i++ 等价于 i = i + 1 或 i += 1
++i 等价于 i = i + 1 或 i += 1
自减运算符:--
i++或++i
5
i
5
i
6
i--或--i
5
i
5
i
4
自增、自减运算符的使用
j = ++i
1
i
2
i
自增、自减运算符的使用
例如:若i的值为1
表达式“j = ++i”的值是什么?
表达式“j = i++”的值是什么?
2
j
j = i++
1
i
2
i
1
j
自增、自减运算符的副作用
表达式中过度使用自增、自减运算符会带来副作用,容易产生歧义
例如:若i的值为1,j的值为2,表达式“i+++j”的值是什么?
例如:若i的初值为1,(i++) + (i++) + (i++)等于多少?
在C语言中,将变量i的值增1可以有以下表达形式,可见C的运算符丰富、书写形式简洁的特点:
i = i + 1
i += 1
i++ 或++i