位和逻辑运算符
来源:互联网 发布:金融很虚 知乎 编辑:程序博客网 时间:2024/05/28 15:28
一、逻辑运算符:
P0 ^ 1 == 0x81;
P0 ^
P0 ^
P0 ^
1级(左结合) () 圆括号;[]下标运算符;->指向结构体成员运算符;. 结构体成员运算符。 2级(右结合) !逻辑非运算符;~按位取反运算符;++前缀增量运算符;--前缀减量运算符;+正号运算符;-负号运算符;(类型)类型转换运算符;*指针运算符;&地址运算符;sizeof长度运算符。 3级(左结合) *乘法运算符;/除法运算符;%取余运算符。 4级(左结合) +加法运算符;-减法运算符。 5级(左结合) <<左移运算符;>>右移运算符。 6级(左结合) <、<=、>、>=关系运算符。 7级(左结合) ==等于运算符;!=不等于运算符。 8级(左结合) &按位与运算符。 9级(左结合) ^按位异或运算符。 10级(左结合) |按位或运算符。 11级(左结合) &&逻辑与运算符。 12级(左结合) ||逻辑或运算符。 13级(右结合) ? :条件运算符。 14级(右结合) =、 +=、 -=、 *=、 /=、 %=、&=、 ^=、 |=、 <<=、>>=赋值运算符。 15级(左结合) ,逗号运算符。
编辑本段运算符优先级与结合性
运算符的优先级:C语言中,运算符的运算优先级共分为15 级。1 级最高,15 级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。 运算符的结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z) 运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。 优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。 所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。 具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。 其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。 另外在C语言里,没有前置后置之分,因为++ -- 是右结合所以右侧优先运算,表现为 "操作数后置优先级比较高"的假象,前置和后置的区分是因为运算符重载而后加入C++的 接下来是算术运算符,*、/、%的优先级当然比+、-高了。 移位运算符紧随其后。 其次的关系运算符中,< <=> >=要比 == !=高一个级别,不大好理解。 所有的逻辑操作符都具有不同的优先级(单目运算符除外,!和~) 逻辑位操作符的"与"比"或"高,而"异或"则在它们之间。 跟在其后的&&比||高。 接下来的是条件运算符,赋值运算符及逗号运算符。 在C语言中,只有4个运算符规定了运算方向,它们是&&、||、条件运算符及赋值运算符。 &&、||都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0&& b;&&运算符的左边位0,则右边表达式b就不再判断。 在条件运算符中。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。 赋值表达式则规定先对右边的表达式求值,因此使 a = b = c = 6;成为可能。
- 位和逻辑运算符
- 位运算符和逻辑运算符
- 逻辑运算符和位运算符
- 逻辑运算符和位运算符
- 逻辑运算和位运算
- 逻辑运算和位运算
- 位运算和逻辑运算
- 逻辑运算和位运算
- c++位运算和逻辑运算(&&和||:逻辑运算符;&和|:按位运算符)
- 位逻辑运算符?
- c++位运算和逻辑运算
- c++位运算和逻辑运算
- &和&&的区别,逻辑运算符和位运算符
- C语言中的逻辑运算符和位运算符总结
- C语言中的逻辑运算符和位运算符
- C\C++,delphi,vb 逻辑运算符和位运算符
- C语言中的逻辑运算符和位运算符总结
- JS的逻辑运算符&& ||和位运算符 & | 的区别
- H面试程序(26):判断字符串是否定回文字符串
- 招聘题9.6日
- MySQL记录
- U-Boot移植(二)——U-Boot编译过程分析(1)
- select as
- 位和逻辑运算符
- 51单片机的中断 笔记
- Android中调用Sqlite数据库
- 中断寄存器
- C51中的扩展定义类型
- 1602液晶显示屏
- Android 注册广播的两种方式区别
- 关于define
- I2C总线;at24c02