运算符
在应用程序中,经常会对数据进行运算,为此,C 语言提供了多种类型的运算符,即专门用于告诉程序执行特定运算或逻辑操作的符号.根据运算符的作用,可以将 C 语言中常见的运算符分为下图中的六大类.
算术运算符
在数学运算中最常见的就是加减乘除四则运算.C 语言中的算术运算符就是用来处理四则运算的符号,这是最简单,最常用的运算符号.表 2-11 列出了 C 语言中的算术运算符及其用法.
算术运算符看上去都比较简单,也很容易理解,但在实际使用时还有很多需要注意的问题,具体如下:
1,进行四则混合运算时,运算顺序遵循数学中 "先乘除后加减" 的原则.
2,在进行自增(++)和自减(--)的运算时,如果运算符(++ 或 --)放在操作数的前面则是先进行自增或自减运算,再进行其他运算.反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算.
请仔细阅读下面的代码块,思考运行的结果.
上面的代码块运行结果为:num2=3,res=3,
int num1 = 1; int num2 = 2;
int res = num1 + num2++;
printf("num2=%d" + num2);
printf("res=%d" + res);
具体分析如下:
第一步:运算 mum1+mun2++ 的结果,此时变量 mun1,mum2 的值不变.
第二步:将第一步的运算结果赋值给变量 res,此时 res 值为 3.
第三步:mum2 进行自增,此时其值为 3.
3,在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数.如果除法运算有浮点数参与运算,系统会将整数数据隐形类型转换为浮点类型,最终得到的结果会是一个浮点数.
例如, 2510/1000 属于整数之间相除,会忽略小数部分,得到的结果是 2,而 2.5/10 的实际结果为 0.25.
请思考一下下面表达式的结果:
3500/1000*1000
所得结果为 3000.由于表达式的执行顺序是从左到右,所以先执行除法运算 3500/1000,得到结果为 3,然后再乘以 1000,最终得到的结果就是 3000.
4,取余运算在程序设计中都有着广泛的应用,例如判断奇偶数的方法就是求一个数字除以 2 的余数是 1 还是 0.在进行取余运算时,运算结果的正负取决于被余数 (% 左边的数) 的符号,与余数 (% 右边的数) 的符号无关.
如:(-5)%3=-2,而 5%(-3)=2.
赋值运算符
赋值运算符的作用就是将常量,变量或表达式的值赋给某一个变量.下表中列举了 C 语言中的赋值运算符及其用法.
在这个表中, "=" 的作用不是表示相等关系,而是赋值运算符,即将等号右侧的值赋给等号左侧的变量.在赋值运算符的使用中,需要注意以下几个问题:
1,在 C 语言中可以通过一条赋值语句对多个变量进行赋值,具体示例如下:
在上述代码中,一条赋值语句可以同时为变量 x,y,z 赋值,这是由于赋值运算符的结合性为 "从右向左",即先将 5 赋值给变量 z,然后再把变量 z 的值赋值给变量 y,最后把变量 y 的值赋值变量 x,表达式赋值完成.
int x, y, z;
x = y = z = 5; // 为三个变量同时赋值
需要注意的是,下面的这种写法在 C 语言中是不可取的.
intx = y = z = 5;// 这样写是错误的
2,在该表中,除了 "=",其他的都是特殊的赋值运算符,接下来以 "+=" 为例,学习特殊赋值运算符的用法,示例代码如下:
int x=2;
x+=3;
上述代码中,执行代码 x += 3 后,x 的值为 5.这是因为在表达式 x+=3 中的执行过程为:(1)将 x 的值和 3 的执行相加.
(2)将相加的结果赋值给变量 x.
所以,表达式 x=+3 就相当于 x = x + 3,先进行相加运算,在进行赋值.-=,*=,/=,%= 赋值运算符都可依此类推.
多学一招:运算符的结合性
运算符的结合性指同一优先级的运算符在表达式中操作的结合方向, 即当一个运算对象两侧运算符的优先级别相同时, 运算对象与运算符的结合顺序.大多数运算符结合方向是 "自左至右".示代码如下:
a-b+c;
上述代码中表达式 a- b + c,b 两侧有 - 和 + 两种运算符的优先级相同, 按先左后右的结合方向, b 先与减号结合, 执行 a- b 的运算, 然后再执行加 c 的运算.除了自左至右的结合性外, C 语言还有三类运算符,它们分别是单目运算符,条件运算符和赋值运算符.以赋值运算符为例,具体代码如下所示:
a=b+c;
求关注,求转发,求支持!
来源: http://www.jianshu.com/p/286ea6555f7a