操作符是我们平时编程敲代码所必不可少,必须要用的
今天这里对操作符作小小的总结
大体上,操作符分为以下几种——
1.算数操作符
加+ 减- 乘* 除/ 取余%
1. 这里 除了 取余% 之外,其余都可以作用于 整数和浮点数(小数)
2. 对于 除/ 需要注意,只要有浮点数执行的就是浮点数除法
3.取余% 的两个操作数必须是整数。返回的是整除之后的余数
2.移位操作符
左移操作符<< 右移操作符>>
需要注意的是:这里的左移右移是在数字的二进制代码下进行的!
左移:左边抛弃、右边补0
右移运算分两种:
1. 逻辑移位 左边用0填充,右边丢弃
2. 算术移位 左边用原该值的符号位填充,右边丢弃 (算术移位应该是最合理的!)
3.位操作符
& 按位与 | 按位或 ^ 按位异或 注意:他们的操作数必须是整数
例:
#include <stdio.h>
int main()
{
int num1 = 1;
int num2 = 2;
int ret = 0;
ret = (num1 & num2, num1 | num2, num1 ^ num2);
printf("ret= %d\n", ret);
return 0;
}
输出结果:ret=3
4.赋值操作符
= 赋值操作符可以连续使用!
赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值
例:
int weight = 120;//体重
weight = 89;//不满意就赋值
double salary = 10000.0;
salary = 20000.0;//使用赋值操作符赋值
暨:随用随赋值
除此之外,还有一些复合赋值符
+= -= *= /= %= >>= <<= &= |= ^=
5.单目操作符
! | 逻辑反操作 |
- | 负值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作数的类型长度(以字节为单位) |
~ | 对一个数的二进制按位取反 |
-- | 前置、后置减减-- |
++ | 前置、后置加加++ |
* | 间接访问操作符(解引用操作符) |
(类型) | 强制类型转换 |
关于sizeof——
sizeof功能是用来求变量(类型)所占空间的大小
例:
#include<stdio.h>
void test1(int arr[])
{
printf("%d\n", sizeof(arr));//(2) 传的是首元素的地址,应存放到一个指针变量,占4个字节
}
void test2(char ch[])
{
printf("%d\n", sizeof(ch));//(4) 传的是首元素的地址,应存放到一个指针变量,占4个字节
}
int main()
{
int arr[10] = { 0 };
char ch[10] = { 0 };
printf("%d\n", sizeof(arr));//(1) 打印这个整形数组总空间的大小:4*10=40
printf("%d\n", sizeof(ch));//(3) 打印char这个数组总空间的大小:1*10=10
test1(arr); //进行数组传参
test2(ch);
return 0;
}
输出结果:40 10 4 4
6.关系操作符
大于> 大于等于>= 小于< 小于等于<= 不等于 !=(用于测试“不相等”) 等于 ==(用于测试“相等”)
注意:== 和 = 的区别
7.逻辑操作符
&& 逻辑与 || 逻辑或
注意 逻辑与 和 按位与、逻辑或 和 按位或 的区别
例:
1&2----->0
1&&2---->1
1|2----->3
1||2---->1
例:
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b && d++;
//i = a++||++b||d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
程序输出结果:
第一次 :a=1 b=2 c=3 d=4 因为是 逻辑与 的关系,所以当a是a++(暨先操作再自+1),此时a=0后面不执行,所以只有a自加1,其余变量原值不变
第二次:a=1 b=3 c=3 d=4 因为是 逻辑或 的关系,所以当运行到++b(先自+1再运算),b已变成1,而对于或运算,只要有一个1,后面的就不用再计算,所以a,b自加1,c,d 原值不变。
7.条件操作符
exp1 ? exp2 : exp3 暨判断exp1,执行exp2或者exp3
例:
if (a > 5)
b = 3;
else
b = -3;
如用条件操作符写:
a > 5 ? b = 3 : b = -3 ;
或者
b = a > 5 ? 3 : -3;
显然,下面的写法更简洁高效。
8.逗号表达式
exp1, exp2, exp3, ...expN
逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
例:
int a = 1;
int b = 2;
int c =(a>b, a=b+10, a, b=a+1);
程序输出的结果c=13
9.下标引用操作符、函数调用和结构成员
[] 下标引用操作符 ()函数调用操作符