算术操作符
+ - * / %
注意:1.对于 / 操作符说如果两个操作数都是整数得到的仍然是整数(得到的是 “商” ),要想得到浮点数,则两个操作数中必须 有一个是浮点数。
2.对于 % 操作符来说两个操作数必须都是整数(得到的是 “余” 数)。
移位操作符
>> 右移操作符
<< 左移操作符
右移操作符分为:
1.逻辑右移 右边舍弃,左边补0
2.算术右移 右边舍弃,左边补原符号位
左移操作符同逻辑右移;
位操作符
& //按位与 (二进制中对应位有0,则结果为0)
| //按位或 (二进制中对应位有1,则结果为1)
^ //按位异或 (二进制中对应位相同则为0,不同则为1)
注意:位操作符的两个操作数都必须是整数
特殊的,通过^操作符可以实现两个整数互换
a = a^b;
b = a^b;
a = a^b;
赋值操作符
= 注意区别 = 和 ==的区别
*= Example:a*=2 a = a*2
/=
+=
-=
%= a%=2 a = a%2
>>=
<<=
单目操作符
++ -- +(正) -(负) ~ * &(取地址) ! sizeof
单目操作符注意它的优先级
前置++a和后置a++的区别:前置++a表示a先加1,再使用,后置a++表示a先使用,再加1;
同理--也是如此
sizeof是操作符不是函数,它可以用来求一个数的字节大小,也可以用来求一个类型的大小
int a = 0;
sizeof(a);
sizeof( int );
sizeof可以用来求数组元素的个数
关系操作符
>=
<=
>
<
!= 用来测试两个数“不相等”
== 用来测试两个数“相等”
注意在书写代码的时候不要将==误写成=,所导致的错误
逻辑操作符
&& 表达式1&&表达式2 表达式1和表达式2都成立,结果才为真 注意:如果表达式1为假,表达式2将不会再计算
|| 表达式1 || 表达式2 表达式1或表达式2成立,结果都为真 注意:如果表达式1为真,表达式2将不会再计算
关于注意的具体实例请参考https://blog.csdn.net/weixin_44915811/article/details/90417381
条件操作符
表达式1 ?表达式2 :表达式3 (三目操作符)
使用规则:计算表达式1,如果为真,以表达式2的结果作为整体的结果,表达式2为假,以表达式3的结果作为整体的结果
Example: a>b ? a : b
逗号表达式
表达式1,表达式2,表达式3,……表达式n;
逗号表达式是好多个表达式用逗号隔开,而计算规则是:从表达式1计算到表达式n,以表达式n的结果作为整个表达式的结果。
下标引用操作符
[ ]
操作数:数组名+一个整型表达式或值
int arr[10] = {0};
arr,10为 [ ]的两个操作数 注意 : [ ]内不能是变量,只能是整型常量或者整形表达式
函数调用
( )
函数调用操作符的操作数是: 函数名和传递的参数
char arr[] = "hello world";
int ret = MyStrlen(arr); 对于函数调用操作符来说,函数名和参数都是他的操作数;缺少函数名变成了(arr)显然不正确,缺少 参数MyStrlen()也是不正确的 函数本身不需要参数除外。
访问结构体成员
结构体 . 成员名
结构体指针 -> 成员名
struct Stu
{
char name[20];
char sex[5];
};
struct Stu s;
struct Stu* ps = &s;
struct Stu s.name = "张三";
ps -> sex = " 男";