1月10日 C Primer Plus学习
5.2.1 赋值运算符:=
赋值运算符左侧必须引用一个储存位置,最简单的方法就是使用变量名。
用于储存值的数据存储区域统称为数据对象。
左值用于标识特定数据对象的名称或表达式。左值指定一个对象,可以引用内存中的地址。它可用在赋值运算符的左侧。
右值指的是能赋值给可修改的左值的量,且本身不是左值。
程序清单 5.3 ———————— 点击查看
#include<stdio.h>
int main(void)
{
int jane, tarzan, cheeta;
cheeta = tarzan = jane = 68;
printf(" cheeta tarzan jane");
printf("First round score %4d %8d %8d\n", cheeta, tarzan, jane);
return 0;
}
其它许多语言都会回避该程序中的三重赋值,但是C 完全没问题。
赋值的顺序是从右往左。
5.2.2 加法运算符:+
printf("%d", 4 + 20);
打印的是24
income = salary + bribes;
income 、salary 、bribes 都是可以修改的左值。因为每个变量都标识看一个可被赋值的数据对象。
但是,表达式salary + bribes 是一个右值。
5.2.3 减法运算符:-
减法运算符用于减法运算,使其左侧的数减去右侧的数。
+ 和- 运算符都被称为二元运算符,即这些运算符需要两个运算对象才能完成操作。
5.2.4 符号运算符:- 和+
减号还可用于标明或改变一个值的代数符号。以这种方式使用的负号被称为一元运算符。
一元运算符只需要一个运算对象。
C90 标准新增了一元+运算符,它不会改变运算对象的值或符号。
5.2.5 乘法运算符:*
C 没有平方函数。
5.2.6 除法运算符:/
在C 语言中,整数除法结果的小数部分被丢弃,这一过程被称为截断。
整数除法会截断计算结果的小数部分(丢弃整个小数部分),不会四舍五入结果。
混合整数和浮点数计算的结果是浮点数。
实际上,计算机不能真正用浮点数除以整数,编译器会把两个运算对象转换成相同的类型。
5.2.7 运算符优先级
下表为运算符优先级(从高至低)
| 运算符 | 结合律 |
|---|---|
| () | 从左往右 |
| + -(一元) | 从右往左 |
| * / | 从左往右 |
| + -(二元) | 从左往右 |
| = | 从右往左 |
5.2.8 优先级和求值顺序
当运算符共享一个运算对象时,优先级决定了求值顺序。
y = 6 * 12 + 5 * 20;先进行两个乘法运算6 * 12 和5 * 20 ,再进行加法运算。但是优先级并未规定到底先进行哪一个乘法。
C 语言把主动权留给语言的实现者,根据不同的硬件来决定先计算前者还是后者。
结合律只适用于共享同意运算对象的运算符。
浙公网安备 33010602011771号