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;

incomesalarybribes 都是可以修改的左值。因为每个变量都标识看一个可被赋值的数据对象。

但是,表达式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 语言把主动权留给语言的实现者,根据不同的硬件来决定先计算前者还是后者。

结合律只适用于共享同意运算对象的运算符。

posted @ 2022-01-30 14:51  shucharjer  阅读(29)  评论(0)    收藏  举报