C语言的运算符

1、运算符分类


算术运算符

+ - * / %


关系运算符

>= > < <= != ==


逻辑运算符

!(非) &&(与) ||(或)


赋值运算符
= += -= *= /=

2、运算符优先级别

算术 > 关系 > 逻辑 > 赋值


3、附录一些琐碎的运算符

1>、自增(自减)
分类:
前自增 ++i
后自增 i++
前自增和后自增的异同:
相同:
最终都是i的值加1
不同:
++i整体表达式的值是i+1之后的值
i++整体表达式的值是i+1之前的值
int i, j, k, m, a, b;
i = j = 3;
k = i++;
m = ++j;
a = i--;
b = --i;
结果:k = 3, m = 4, a = 3, b = 2

为什么会出现自增
代码更精练
自增的速度更快

学习自增要明白的几个问题
1、我们编程时应该尽量屏蔽掉前自增和后自增的差别。
2、自增表达式最好不要作为一个更大表达式的一部分来使用。
或者说i++和++i单独成一个语句,不要把它作为一个完整复合语句的一部分来使用。
如:
   int m = i++ + ++i + i + i++; 
// 这样写不但不规范,而且不可移植

// 顺序点有三个, () ;   即出现顺序点,前面的代码立即生效
// 但 + 不是一个顺序点

   printf("%d %d %d", i++, ++i, i);// 这种写法不好


2>、三目运算符

格式:
A ? B : C

等价于:
if(A)
B;
else
C;

顺序点:所有的语句必须在下个顺序点后的下个语句执行前生效

3>、逗号表达式

格式:
A, B, C, D

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

i = (j++, ++j, j+2, j-3);
从左向右,j++ -> j == 3
 ++j -> j == 4
 j+2 -> j == 4
 j-3 -> j == 4
 整个表达式值为最后一项的值 j-3 == 4-3 ==1

4、例子


1>、

(-13)/4 == -4
(-13)/(-3) == 4
13 % -3 == 1
-13 % 3 == -1
-13 % -3 == -1
取余的运算对象必须是整数,结果是整除后的余数,其余数的符号与被除数相同。

2>、

C语言对真假的处理:

非零是真 -- 真 -- 1

零是假  -- 假 -- 0

m = (3 > 2) && (k = 8)    -----  m == 1

上式中(k = 8)这个式子的整体值为 8

3>、

int k = 10;
int m;

m = (1 > 2) && (k = 6);

结果: m = 0; k = 10;
因为&&的运算顺序是从左向右,当左边为0时,无论右边为何止,整个式子的值为0,所以右边 k = 6 不会被执行。


m = (2 > 1) || (k = 8);

结果:m = 1;k = 10;
同理,右边不会被执行。

m = (2 > 3) || (k = 8);

结果:m = 1; k = 8;
左边为假,右边被执行。

4>、

i = 10  // 不加分号是表达式
i = 10; // 加分号是语句
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值