c语言中各种运算符

位运算符

 算术运算符


单目运算符
说明: ++ -- +(正) -(负) *(解引用运算符)
++a与a++的区别
        int a = 1,int x = ++a; : ++ 在前,先自加1,后运算
        int a = 1,int x = a++; : ++ 在后,先运算,后自加1
案例:

        总结: 分析上面的案例,我们发现,不管是 ++ 在前,还是 ++ 在后,计算数自身都会+1。区别在于运算的结 果不一样。 ++ 在前,先自加1,后运算; ++ 在后,先运算,后自加1。

双目运算符

说明: + - * / %

举例:

        注意: 1. 两个整数相除的结果是整数,小数部分被舍弃。要想其结果是实数,可在分子*1.0(隐式类型转换) 2. 求模运算(取余运算)左右两边的操作数都必须是整型。如果是类似于3.0这样的数,是错误的。

关系运算符

说明: >  <  >=  <=  !=  ==

案例:

什么是表达式?

        表达式就是表达某种意思的式子。在C语言中,表达式指的是 运算符 连接 操作数 (变量|常量...)的式 子。

注意:

由关系运算符构成的表达式称为关系表达式,关系表达式的值为boolean(布尔值)

非0 :关系成立,为真
0 :关系不成立,为假

 逻辑运算符

说明: &&(与) ||(或) !(非)

&& :逻辑与(且),符号两边的操作数都为真,结果才为真。举例: ((5>4)&&(5-4)>1) ,结果 0
|| :逻辑或(或),符号两边的操作数只有有一个为真,结果就为真。举例: ((5>4)||(5-4)>1) ,结果 1
! :逻辑反(取反),取反,非0为真,举例: !(!(5>4)) ,结果 1

惰性运算
所谓的惰性运算,就是减少运算次数。
短路与: && 两边的操作数,只要左边不成立 0 ,直接返回假,不再校验右边。
短路或: || 两边的操作数,只要左边成立 1 ,直接返回真,不再校验右边。

<<        :左移,按bit往左偏移

1.无符号左移

        语法:操作数 << 移动位数 (bit位)

unsigned int a = 3 << 3
printf("%d\n",a);//24

2.有符号左移:

        语法:操作数 << 移动位数(bit位)

int a = -3 << 3;
printf ("%d\n",a)//24

 >>:右移,按bit位往右偏移

1. 无符号右移:

        语法: 操作数 >> 移动位数(bit位)

unsigned char a = 3 >> 3;
printf("%d\n",a);//0

2. 有符号右移:

         语法: 操作数 >> 移动位数(bit位)

int a = -3 >> 3;
printf("%d\n",a);//-1

注意:

        在进行移位运算的时候,凡是被移出去的则被丢弃,空出来的位,补0。移位运算针对无符号整数。如果非要进行有符号的移位运算,那么左移的时候,空出来的补0,右移的时候空出来的补符号位(原码阶段

其他运算符

明:=        +=        -=        *=        /=        %=

赋值运算符

        包含:=,由右 ->左,优先级排倒数第三

int a=4;
int num=5+6;

        注意:赋值运算符的左边(左操作数)必须是可写的地址

复合赋值运算符

        包含:+=        -=        *=        /=        %=,由右->左,优先级倒数第二

int i=1;
i+=1;//等价于 i=i+1
i*5;//等价于  i=i*5

三目运算符

        语法:表达式1?表达式2:表达式3

        求值顺序:

                如果表达式1的值为1,则整个条件运算表达式的值为表达式2的值

                如果表达式1的值为0,则整个条件运算表达式的值为表达式3的值

逗号运算符        ,

        说明:优先级最低,左->右,由多个运算符将多个不同的式子连接起来的表达式

        语法:

(表达式1,表达式2....);

          求值顺序:先求表达式1,再求2,以此类推,整个逗号表达式的值为表达式n的值。        

        注意:

        逗号表达式的优先级最低,

        运算顺序从左往右,

        整个逗号表达式的值取决于最右边的表达式的值。

优先级的顺序

扩展

ISO-8859-1:西欧编码,一般遇到直接改编码。针对文件内容。
GBK:国标,中国标准编码/字符库,收录了大量的汉字+中文符号。针对文件内容。
UTF-8:全球标准,几乎收录了全球的各种字符集,包括GBK包含的常用汉字以及中文符号。针对文件内容。
ASCII:字符集,C语言字符就是以ASCII码进行存储。针对程序内部数据。

  • 27
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值