操作符详解

一.算术操作符

操作符作用举例
+数与数的相加1+1=2
-数与数的相减2-1=1
*数与数的相乘2*3=6
/数与数的相除(应注意是否需要保留小数)

5/2=2 

5.0/2=2.5

%数与数的相除取余5%3=2

可以看到除数与被除数是否有小数对结果也会有影响

二.移位操作符(需转换成二进制)

1.向左移位:<<,向右移位:>>

例如

int a=1;
int b=a<<1;

1的二进制表示为  00000000000000000000000000000001,

向左移一位表示为00000000000000000000000000000010,即为2

2.负数的移位

负数移位相比正数就要麻烦很多

原码,如-1原码为10000000000000000000000000000001

反码,如-1反码为1111111111111111111111111111111111110

补码,如-1补码为1111111111111111111111111111111111111

可以看出,原码即为数字直接转换为二进制,反码将0变为1,1变为0,补码即为反码+1

移位时移动补码后的值,向右移位,左边空缺的数用1补齐,向左则用0,然后再将其转为反码,补码后即为所求值

三.位操作符

操作符作用(二进制中)
&(与)同一位置的两个数都为1时为1
|(或)同一位置的两个数至少有一个为1时为1
^(异或)同一位置的两个数不同时为1

 四.赋值运算符

操作符举例
+1+2=3
+=a+=3    ==    a=a+3
-=a-=3     ==    a=a-3
*=a*=3     ==    a=a*3
/=a/=3      ==   a=a/3
<<=a<<=1   ==   a=a<<1
>>=a>>=1   ==   a=a>>1
%=a%=3    ==   a=a%3

 五.单目操作符

操作符作用
逻辑反操作
-负值
+正值
&取地址
sizeof操作数的类型长度
~二进制按位取反
--分为前置后置a--,--a
++分为前置后置a++,++a
*间接访问操作符(解引用)
(类型)强制类型转换

 sizeof算长度的时候int为4,char为1

char a=1;
int b=(int)a;

这就实现了数据类型转换

六.关系操作符

>,>=,<,<=,!=,== 

这里需要注意==的使用,赋值时使用=,判断相等时使用==

七.逻辑操作符

&&,||

a&&b&&c,当a为假时,系统将不再进行后面的运算

同样a||b||c,当a为真时,系统也不再进行后面的运算

八.条件操作符

?:     int max=(2<3?2:3),max就将赋值为3

括号中的式子如果成立就将输出:前的值,不成立则输出:后的值

九.逗号表达式

int a=(1+3,2+3,3+3)在这里括号中从左往右运算,但是赋的值是最后一个表达式,也就是a=6

十.其他操作符

1.下标引用操作符

即数组中的[]

2.函数引用操作符

我们在主函数外定义一个函数,这时就需要()来调用该函数

void test()
{}
int main()
{
    test();
}

3.访问结构体成员

struct people
{
    char name[20];
    int age;
};
int main()
{
    struct people a={"张三",20};
    printf("%s  %d",a.name,a.age);
    struct people*p=&a;
    printf("%s  %d",p->name,p->age);
}
    

① .  适用于结构体中

②->适用于指针结构体

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值