c语言算术表达式总结,c语言操作符小结

* 算数操作符(+,-,,/,%)

+,-,*,正常运算就好,但"/"和"%"较为特殊需要注意!

"/":

1)当该符号两端数据类型都为int时,输出类型为int 。若符号两端数据类型不同时,则按精度小的类型进行计算。精度大的数被隐式类型转换(编译器自动转换)为精度小的类型。

2)当除数为一个常数0时,编译器汇报编译错误。当除数为一个一个变量,变量的值为0时,编译通过但运行时会错。

"%":

1)该符号只针对int 整型有效。

2)当符号右端为常数0或变量值为0时,情况与"/"相同。

* 移位操作符(<>)

ps:不要对负数进行移位操作,这是未定义行为!

"<

1)按二进制移位;

2)左移n位相当于十进制的*2的n次方;

3)左边抛弃,右边补0;

4)左移后原数值在没有被赋值的情况下是不变的;

#include

#include

int main() {

int num = 10;

printf("%d\n",num<<1 );

printf("%d\n", num);

printf("%d\n", num=num<<1);

system("pause");

return 0;

}

结果为:

ed346c041c32249e13e0d60ec269817d.png

">>"右移操作符:

1)按二进制移位;

2)右移n位相当于十进制的 / 2的n次方;

3)逻辑移位:左边补0,右边抛弃

算数移位:左边补符号位,右边抛弃

4)右移后原数值在没有被赋值的情况下是不变的;(情况同上,不再做过多赘述)

* 位操作符(&,|,^,~)

ps:按二进制位操作,操作数必须为整数

"&":

全1为1,否则为0

"|":

全0为0,否则为1

"^":

相同为0,相异为1

"~":

0变1,1变0

*赋值操作符( = )

修改变量的值,可以连续连续赋值(例:a=x=y+1),但强烈不建议这么写,可读性差。

ps:此处补充一点:赋值与初始化的区别

赋值:修改值

初始化:申请内存空间,放值到内存中

* 复合操作符(+= ,-= ,= ,/= ,%= ,>>= ,<<= ,&= ,|= ,^= )

复合运算符与其他运算符功能一样,但可以使代码更简洁

int x=10;

x=x+10;

x+=10;//复合赋值,效果与上式相同

* 单目操作符(!,- ,+ ,& ,sizeof ,~,--,++, ,(类型))

"!"逻辑反操作

"-"负值

"+"正值

"&"取地址

"sizeof"操作数的类型长度(以字节为单位):

编译过程中求值,运行时才申请内存

"~"对一个数二进制按位取反

"--"前置,后置 --

"++"前置,后置++:

前置后置的区别:

a)不取表达式的值,等价

b)取表达式的值:

前置,返回自增(自减)后的值;

后置,返回自增(自减)前的值

" * "解引用操作符

"(类型)"强制类型转换:

此处会发生“截断”现象,即把一个占字节数多的变量赋值给一个占字节数少的变量,会把高位截断。把一个占字节少的变量赋值给一个占字节数多的变量,高位会进行补位(补符号位)

* 关系操作符(> , >= ,< ,<= ,!= ,== )

在前面已经介绍了这些操作符,在此不再赘述,注意 = 和 == 书写时不要出错即可。

* 逻辑操作符(&& ,|| )

"&&":逻辑与

&&相当于and

" || ":逻辑或

|| 相当于 or

“短路求值”:

对于&&,若左侧表达式值为假,那么右侧不再求值,整个表达式结果为假

对于 || ,若左侧表达式值为真,那么右侧不再求值,整个表达式结果为真

* 条件操作符(表达式1 ?表达式2 :表达式3)

如果表达式1结果为真,则返回表达式2的值,否则返回表达式3的值

ps:优先级最低!!!

* 逗号表达式(表达式1,表达式2,表达式3)

整个表达式的结果为最后一个表达式的结果。

* 下标引用操作符( [ ] )

数组名+索引值,调用数组的值

* 隐式类型转换

类似于char/short这样的类型,参与算数运算的时候会触发整型提升,即隐式转换为int 型再参与运算!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值