关于优先级和结合性
来源:互联网 发布:linux 串口编程 编辑:程序博客网 时间:2024/05/24 05:11
- 运算符的优先级:C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。
- 运算符的结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。
举例说明结合型:
考虑如下的赋值表达式。
int a = 0;
int n = 0;
n = a < 1 ? 1 : a== 0 ? 2 : 0;
如果? : 为左结合性,有
n = (a < 1 ? 1 : a==0) ? 2 : 0;
最终n = 2;
为右结合性,有
n = a < 1 ? 1 : (a==0 ? 2 : 0);
最终n = 1;
经验证,
n = a < 1 ? 1 : a== 0 ? 2 : 0;执行完后,有n = 1,故而 ?: 为右结合性。
结合性:
一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。
例一: a = b = c;
运算量b的左右两侧都为=号,而=具有右结合性,故应该由右向左计算,即:a = (b = c);
例二: if (5 == 4 == 0) {}
由于关系运算符具有左结合性,那么先计算 5 == 4, 结果为0, 在计算 0 == 0,结果为真。
- 关于优先级和结合性
- 优先级和结合性
- 优先级和结合性
- 关于优先级、结合性和求值顺序的讲解
- 4. 优先级和结合性
- C++ 运算符优先级和结合性
- 操作符的优先级和结合性
- 运算符的优先级和结合性
- 运算符的优先级和结合性
- 运算符优先级和结合性
- C++优先级和结合性列表
- 运算符的优先级和结合 性
- 运算符的优先级和结合性
- 运算符的优先级和结合性
- 运算符的优先级和结合性
- JAVA运算符优先级和结合性
- 运算符的优先级和结合性
- 运算符优先级和结合性
- 位图和BitBlt
- The Device Context
- 定时任务update锁表问题
- 我是CSDN成员中的新人
- 关于C# socket多线程的7个问题.希望大家发表一下意见.
- 关于优先级和结合性
- 指针笔记
- 最新的flex 的API (里面包含了很多新的功能说明)
- 【解惑】这么多技术我该怎么学
- 该死的IE8!用VS2005开发的同学千万不要装IE8
- IBM xserver new technology and performance update
- 我国自主研制成功铯原子喷泉钟 时间“精度”提高到600万年不差1秒
- 真的很郁闷。。。。。
- 请存书签http://5usg.cn