导读:
前面我们学习了c语言程序的选择结构
分支语句(选择结构):if、switch_流浪者与猴的博客-CSDN博客
以及循环结构
do while、while、for循环以及改变循环的状态_流浪者与猴的博客-CSDN博客
现在我们来学习了解操作符
操作符分类:
算术操作符
赋值操作符
关系操作符
移位操作符
位操作符
逻辑操作符
扫描二维码关注公众号,回复: 17266554 查看本文章单目操作符
条件操作符
逗号表达式
下标引用、函数调用和结构成员
上面几种有一些都是简单易懂的,下面我们来具体了解一下
算术操作符:
+ - * / %
前四个“加减乘除”我们都是很熟悉的,从小学就开始打交道,最后一个" % "算的是余数," / "算的是商,比如" 4 / 2 "得到的结果是2,而" 4 % 2 "得到的结果是0。
还要注意的是
1.除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
2.对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
3.% 操作符的两个操作数必须为整数。返回的是整除之后的余数。
赋值操作符:
简单赋值:
int main()
{
int weight = 120;//体重
weight = 89;//不满意就赋值
double salary = 10000.0;
salary = 20000.0;//使用赋值操作符赋值。
return 0;
}
当然还有复合赋值府
复合赋值符:
+= -= *= /= %= >>= <<= &= |= ^=
这些操作符可以让我们的代码更简便一些
int main()
{
int x = 10;
x = x + 10;
x += 10;
return 0;
}
x += 10 就相当于x = x + 10;
关系操作符:
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
这些都是用于比较大小或者其它,但是要注意 “=” 与“ == ”的区别
在编程的过程中== 和=不小心写错,就会导致错误。
上面都是些简单易懂的,下面我们来了解一些稍微难一点的,但也是基础的
单目操作符:
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
! 逻辑反操作
可以用于条件判定,比如 if (a != 0)
移位操作符:
我们在电脑中的储存都是二进制,移位操作符就是在二进制的基础上操作的
<< 左移操作符
>> 右移操作符
注:移位操作符的操作数只能是整数。
左移操作符 :
移位规则: 左边抛弃、右边补0
下面我们来看代码
int main()
{
int n = 10;
int m = 0;
m = n << 1;
printf("%d\n", m);
return 0;
}
得到结果
右移操作符:
移位规则:首先右移运算分两种
1. 逻辑移位 左边用0填充,右边丢弃
2. 算术移位 左边用原该值的符号位填充,右边丢弃
警告⚠ : 对于移位运算符,不要移动负数位,这个是标准未定义的。
第一个用作用正数,第二个用于负数
既然我们了解了移位操作符,我们再来学习一下位操作符
位操作符:
& //按位与
| //按位或
^ //按位异或
注:他们的操作数必须是整数
int main()
{
int a = 10;
int b = 20;
int c = 0;
int d = 0;
int n = 0;
c = a & b;
d = a | b;
n = a ^ b;
printf("c = %d d = %d n = %d\n", c, d, n);
return 0;
}
& 按位与
两位数的补码有0取0,都有1取1
| 按位或
两位数的补码有1取1
^ 按位异或
相同为0,相异为1
输出结果:
实操:
不创建临时变量(第三个变量)实现两个数的交换
int main()
{
int a = 3;
int b = 5;
a = a ^ b;//a = 3^5
b = a ^ b;//b = 3^5^5=3 5^5 = 0,3^0=3
a = a ^ b;//a = 3^5^3=5
printf("a = %d b = %d\n", a, b);
return 0;
}
所以我们可以根据其位操作符以及移位操作符的作用,来实现不同的需求
逻辑操作符:
&& 逻辑与
|| 逻辑或
区分逻辑与和按位与
区分逻辑或和按位或
(0 为假,1为真)
1&2----->0
1&&2---->1
1|2----->3
1||2---->1
条件操作符:
exp1 ? exp2 : exp3
这个我们可以用于比较大小中;比如
输入两个数a 和 b,输出其中最大值
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int max = 0;
max = a > b ? a : b;//如果a>b,把a值付给max,反之把b值赋给max
printf("%d\n", max);
return 0;
}
我们输入 20 和 30
逗号表达式
exp1, exp2, exp3, …expN
逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果