运算符

一、算术运算符

① 加 :+

② 减 :-

③ 乘 :*

④ 除 :/
● 被除数与除数都是int类型——>商是int类型,商有小数部分,就把小数部分截去
● C语言整形的除法的结果需要取整,例如5 / 3 = 1。
● C语言中的取整方式是向零取整(向坐标轴0的方向,取最近的整数。)
● C语言中计算-5除以3,因为实数结果约为-1.67,向零取整,得到结果为-1

16 / 5 = 3.2
-13 / 4 = -3
13 / 4 = 3
3 / 5 = 0
5 / 3 =1
● 被除数与除数只要有一个或两个是浮点型数据——>商是浮点型数据,不截去小数部分
16 / 5.0 = 3.20000

⑤ 取余数 :%
● 规定被除数、除数都要为整数。
● 余数符号只与被除数有关

二、关系运算符

① 大于>:
② 大于等于>=:
③ 小于等于<=:
④ 不等于!=:
⑤ 等于==:

三、逻辑运算符

C语言对真假的处理:非零是真、零是假
① 非!
② 且&&:左边的表达式为假,右边的表达式肯定不会执行
③ 或||:左边的表达式为真,右边的表达式肯定不会执行

四、赋值运算符

① =
② +=
③ *=
④ /=
⑤ -=

五、优先级别

算术 > 关系 > 逻辑 > 赋值

六、自增自减

(一)自增 / 自减分类:
在【流程控制for:●i++和++i的区别】里也有提到
《1》前自增:++ i:最终都使 i 的值 +1
前自增整体表达式的值是 i + 1 之后的值

《2》后自增:i ++:最终都使 i 的值 +1
后自增整体表达式的值是 i + 1 之前的值

/*
时间:2020年1月
编辑人:pinkowonote
功能:
目的:运算符——自增 / 自减
*/
# include <stdio.h>
int main(void)
{
	int i;
	int j;
	int k;
	int m;

	i = j = 3;
	k = i++; 
	m = ++j;

	printf("i = %d, j = %d, k=%d, m = %d\n",i, j, k, m);

	return 0;
}
/*
在VS_2013中输出结果是:
--------------------------------
i = 4, j = 4, k=3, m = 4
--------------------------------
总结:
*/

《3》为什么会出现自增 / 自减表达式?i += 1、i = i + 1就已经满足,为什么要把 i ++ 设计出来?
● i += 1、i = i + 1:先把内存中 i 的值取出,在CPU的寄存器里使 i + 1,然后再把 i + 1赋值给 i 这个变量
● i++:直接放在CPU的寄存器【CPU内部存储数据的单元】里来进行处理
①代码更精炼
②自增速度更快

《4》代码规范的原则:
① 编成时尽量屏蔽掉前自增和后自增的差别
② 自增表达式:i++和++i,单独成一个语句,不要把它作为【更大表达式 / 一个完整复合语句】的一部分来使用
eg1:就是不能写 int x = i++ + ++i + i + i++
这样写不但是不规范的代码,而且是不可移植的代码。因为在不同的机器上,不知道 i++ 后执行 ++i的时候,i++ 到底有没有立即 +1。这点是不够明确的,只有存在【顺序点】才能明确是否执行完成
● 顺序点:【,】【(一个完整的表达式)】【;】
i++,++i:i++在【,】之后的语句执行之前 都立即生效
+不是一个顺序点
eg2:printf(“%d %d”,i++,++i,i);
eg3:int x = i++;

七、三目运算符

● int i = 3 > 2 ? 5 : 6;
● A ?B:C
等价于
if (A)
B;
else
C;

/*
时间:2020年1月
编辑人:pinkowonote
功能:
目的:三目运算符
*/
# include <stdio.h>
int main(void)
{
	int i;
	
	i = (3 > 2 ? 5 : 1);
	
	printf("%d\n",i);

	return 0;
}
/*
在VS_2013中输出结果是:
--------------------------------
5
--------------------------------
总结:
*/

八、逗号表达式

《1》格式:
(A, B, C, D)

《2》功能:
从左到右执行
最终表达式的值是最后一项的值

/*
时间:2020年1月
编辑人:pinkowonote
功能:
目的:逗号表达式
*/
# include <stdio.h>
int main(void)
{
	int i;
	int j = 2;

	/*j = 3、j = 4、表达式 = 6(j = 4)、表达式 = 1(j = 4)*/
	i = (j++, ++j, j + 2, j - 3);
	
	printf("%d\n",i);

	return 0;
}
/*
在VS_2013中输出结果是:
--------------------------------
1
--------------------------------
总结:最终表达式(i)的值是最后一项(j - 3)的值
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值