算数操作符
算数运算符 + - * / %
- + * 和数学中是基本一样的
/ 除法就出现的了区别
int a = 10 / 3;//两个整数相除 结果就是整数 如果是10/3.0 那么结果就是浮点数 变量的类型也要注意换成浮点型哦 以及%f
printf("%d",a);
结果:3
%取模 取余操作符 就是在除法之后 最后整除不尽的值取出来
例如:
int a = 10%3;
printf("%d",a);
结果:1
位移操作符 >> <<
位移实际是移动的二进制的位置
int main()
{
int a = 2;
a = a << 2;
printf("%d",a);
}
结果:
8
过程:
2 转换成二进制就是 10 向左边<<移动2位 后面没东西就用0补上 就是 1000
1000转换成十进制 就是8
位操作符 | & ^
| 位或操作符 也是二进制的对比 进行的或运算
10|3
实际是下面这种对比 两个都为0的时候才为0
1010
0011
------
1011 也就是11
& 位与操作符 也是二进制的对比 进行与的运算
10&3
实际是下面这种对比 两个都为1的时候才为1
1010
0011
------
0010 也就是2
^ 异或 两个一样就为0 不一样就为1
10^3
----
1010
0011
------
1001 结果 9
赋值操作符
= += -= *= /= %= ^= |= >>= <<=
=是赋值操作符 就是把右边的值 赋给左边的变量
+= 就是左边的值加上右边的值 然后赋值给左边例如
int a = 10;
a += 12; 就相当于 a = a +12; 后面的-+ *=…都是一个意思
单目操作符
! //逻辑取反
- //负号
+ //正号
& //取地址符 可以取内存地址
sizeof //注意 sizefo是操作符 在使用的时候可以不加括号
~ 一个数的二进制位取反
-- //减减
++ //加加 前++ 后++之前有说过 --也是一样的
* 间接访问操作符 (解引用)
通过一个指针访问它所指向的地址这个过程叫做间接访问(indirection)或者解引用指针(dereferencing the pointer)。
~ 位取反需要单独拉出来讲一下 原码 反码 补码参考:
https://blog.csdn.net/weixin_44537835/article/details/121177713
逻辑操作符
&& 逻辑与
|| 逻辑或
&& 就是左右两边的表达式 都为true才为true
|| 就是左右两边只要有一边是true 就为true
if(2>1 && 1<3){
printf("v");//这个就是可以正确输出的 因为两个都为True
}
if(2>1 || 1>3){
printf("v");//这个就是可以正确输出的 只要有一个是True就足够了
}
三目操作符
exp?exp1:exp2;
如果exp成立为True 那么就执行exp1 否则就执行exp2
1 > 1 ? printf("1"):printf("0");
结果 0
逗号表达式