标准C语言语法——操作符

1.算数运算符
+ - * / %
+ - * 可能数据溢出
/ 除法 对于整数 只保留整数部分,除数不能为0(浮点类型除外);同类型数据在进行算数运算时 结果也是同类型的

混合运算时: char->short->int->long->float->double
unsigned+signed==>unsigned
char->int 8bit扩充成32bit
% 取余数只有整数才能进行取余运算,对于浮点类型会报错

2.赋值运算符
+= -= *= /= %=
a += 10;==> a = a+10;

a -= 10;==> a = a - 10;

a *= 10;==> a = a * 10;

a /= 10;==> a = a / 10;

a %= 10;==> a = a%10;

不能放在=左边的叫右值
混合赋值: int a = 10;float f = a=3.14;
f=(a=b)=10;错误
3.自增减
++ –
++自增1 ++x先自增1然后再运算
x++先运算然后在自增1
建议:
(i)不要再一个表达式中对同一个变量进行多次+±-运算
(ii)最好不要对浮点类型进行++ - -
(iii)最好不要再调用函数传递时进行++ - -
4.关系运算符
> < >= <= == !=
关系运算符的结果是1或者0,一个关系有两种情况 成立(真1) 不成立(假 0)
a<b;小于

a>b;大于

a>=b;大于等于

a<=b;小于等于

a==b;等于

a!=b;不等于

注意:
(i)关系表达式的结合是从左到右 1<x<2 恒成立
(1<x)<2, x<y(x<y)<z。
(ii)一个 = 为辅助;两个==才是等于

5.逻辑运算符
&& || !
在C语言中表示真 和 假
假:0 (-0.0000001,0.0000001) NULL
真:非“0”
逻辑: 真 或者 假
&& 逻辑与 两者都成立才为真 而且
真&&真 真
真&&假 假
假&&真 假
假&&假 假
|| 逻辑或 或者 只要满足其中之一即为真
真||真 真
真||假 真
假||真 真
假||假 假
! 逻辑非
!真 假
!假 真

注意:
(i)x>1 && x<10
逻辑运算符高于关系运算符,逻辑运算符经常用于 连接多个关系式
(ii)短路特性
假&&表达式 真||表达式
表达式不能影响结果,所以表达式不再进行运算。
(iii)&&结合运算时优先级高于||
&& 结合性优先级 高于 ||
int a=1,b=1,c=1;
int x = ++a>1||++b>1&&++c>1;
++a>1||(++b>1&&++c>1);

6.位运算符
按位进行运算
& | ^ ~ >> <<
& 按位与
二进制0或者1
1&1 = 1
1&0 = 0
0&1 = 0
0&0 = 0
| 按位或
二进制位0或者1
1|1 = 1
1|0 = 1
0|1 = 1
0|0 = 0
^ 按位异或 异1 二进制位不同则为1
二进制位0或者1
1^1 = 0
1^0 = 1
0^1 = 1
0^0 = 0

~ 按位取反
二进制位0或者1
~0 = 1
~1 = 0
>> 右移右边移出的位舍弃,如果是有符号(signed)的数,补符号位;如果是无符号(unsigned)的数,补0;除了负的奇数 每向右移一位 相当于除以2
>> : 左移,左边移出的位舍弃 右边补0。每向左一次相当于乘以2。
如何表示int最大值和最小值:int n = ~(1>>31);int m = 1<<31;

7.条件运算符(三目运算符)
?:
expr?expr1:expr2
expr1和expr2两个式子只会执行其中之一
如果expr的结果为真,则取expr1否则取expr2。

8.sizeof

(i)运算符 不是函数
(ii)sizeof(操作数)
操作数可以是变量、数值、类型、表达式
(iii)计算存储数据或者类型或者表达式的结果需要的字节数
(iv)只关心类型 不计算表达式
(v)对于类型 不能省略(),
sizeof(long) 4/8
sizeof(混合类型表达式) 宽度最大的字节类型的大小
浮点数字面值默认是double类型,如果要表示float的浮点字面值加一个f/F。
char a=1,b=2;
sizeof(a+b);//4 char在算术运算时扩充成int类型
9.其它
& 取址运算符
, 分隔作用
() 优先级
[] 数组元素访问运算符
. 属性访问运算符(成员访问运算符)
* 取值运算符
-> 结构体指针访问成员运算符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值