操作符详解

操作符
算术操作符
除法
/(除法)得到的商
整数除法不会得到小数(5/2=2)
浮点数除法得到浮点数(5.0/2=2.500000  5/2.0=2.500000)
取模
%左右两边必须是整数
位运算
    位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。
移位操作符(只作用于整数)
>>--右移操作符(有除2的效果)
1.算术右移;
右边丢弃,左边补原符号位( 编译器通常采用此方式 );
2.逻辑右移
右边丢弃,左边补0;
ps:整数在内存中以补码的形式存储。
<<--左移操作符(有乘2的效果)
右边补0,左边丢弃
异或:
数字1^数字2=数字3
则有数字3^数字2=数字1
数字3^数字1=数字2
不创建第三个变量,实现a,b变量之间的交换;
加减法(可能会溢出,a很大,b也很大,加在一起就溢出了)
a=a+b;
b=a-b;
a=a-b;
异或法(异或不会使数字进位,所以不会溢出)
a=a^b;
b=a^b;
a=a^b;
 
     
 
注意:逻辑短路。
 
 
单目操作符
 
sizeof(单位为字节)
int main()
{
int a=4;
short s=0;(short占2个字节)
printf("%d\n",sizeof(s=a+5));
printf("%d\n",s);
return 0;
}
输出:2
          0
sizeof()括号内的表达式不进行运算,所以s还是0;
s=a+5 s在赋值表达式的左边,a+5降精度为char(隐式转化)
前置++:先++,再使用。
后置++:先使用,后++
*p++=i--先将i赋值给*p,p再加加。
int num=p++; 先把p赋值给num,p再加一
int num=++p; p先加一,再赋值给num
条件操作符
int i=(exp1?exp2:exp3)
return exp1?exp2:exp3
exp1为真,exp2计算并输出
exp1为真,exp3计算并输出
逗号表达式
case1:判断语句的括号内加逗号的表达式属于逗号表达式,逗号表达式的规则是从左往右依次执行语句,并返回最后一个语句的结果,如果计算到最后的表达式的值为真,则整个逗号表达式为真,否则为否。
 
case2:逗号表达式用于赋值,从左往右依次执行,整个表达式的结果是最后一个表达式的结果。
 
逗号表达式有副作用:
#include <stdio.h>
int main()
{
        int m = 1;
        int n = 2;
        if (n += m, n > m)
       {
              printf( "%d\n" , n);
       }
       printf( "%d\n" , n);
        return 0;
}
输出:
3
3
 
结构成员
结构体操作符 .    ->
 
输出:
张三
20
2019010305
结构体指针->成员名
令struct* ps=&s1
有printf("%s\n",(*ps).name);等价于printf("%s\n",s1.name);等价于printf("%s\n",ps->name);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值