Cpp:优先级和结合性

本次内容是:复合表达式的求值。尤其是 优先级结合性 部分可以作为字典查看。

1、优先级

在表达式求解过程中,优先级关系到表示如何分组,会影响整个表达式的值。其次是结合性,当优先级相同时,结合性决定求解次序。算术操作符具有左结合性,即从左至右结合

3 + 2 * 3 / 2 - 1

等价于

int tmp = 2 * 3;
int tmp2 = tmp / 2;
int tmp3 = tmp2 + 3;
int result = tmp3 - 1;

括号可以改变优先级,括号内的表达式先行计算。

2、结合性

结合性规定了具有相同优先级的操作符如何分组。如 赋值操作符 = 具有右结合性,所以允许将多个赋值操作串连起来:

val1 = val2 = val3;
(val1 = (val2 = val3));    //与上式等价

算术操作符 具有右结合性:

val1 * val2 / val3;
((val1 * val2) / val3);    //与上式等价

下表是按照优先级顺序给出操作符,并用空行分成不同的段,每段内的优先级相同,且都高于后面各段的优先级。

操作符 结合性 功能 用法
:: L 全局作用域 ::name
:: L 类作用域 class::name
:: L 名字空间作用域 namespace::name
- - -
. L 成员选择 object.member
-> L 成员选择 pointer->member
[] L 下标 variable[expr]
() L 函数调用 name(expr_list)
() L 函数构造 type(expr_list)
- - -
++ R 后自增 lvalue++
-- R 后自减 lvalue--
typeid R 类型ID typeid(type)
typeid R 运行时ID typeid(expr)
显式强制类型转换 R 类型转换 cast_name<type>(expr)
- - -
sizeof R 对象大小 sizeof expr
sizeof R 类型大小 sizeof(type)
++ R 前自增 ++lvalue
-- R 前自减 --lvalue
~ R 位求反 ~expr
! R 逻辑非 !expr
- R 一元负号 -expr
+ R 一元正号 +expr
* R 解引用 *expr
& R 取地址 &expr
() R 类型转换 (type)expr
new R 创建对象 new type
delete R 释放对象 delete expr
delete[] R 释放数组 delete[] expr
- - -
->* L 指向成员操作的指针 ptr->*ptr_to_member
.* L 指向成员操作的指针 obj.*ptr_to_member
- - -
* L 乘法 expr * expr
/ L 除法 expr / expr
% L 求模(求余) expr % expr
- - -
+ L 加法 expr + expr
- L 减法 expr - expr
- - -
<< L 位左移 expr << expr
>> L 为右移 expr >> expr
- - -
< L 小于 expr < expr
<= L 小等于 expr <= expr
> L 大于 expr > expr
>= L 大等于 expr >= expr
- - -
== L 等于 expr == expr
!= L 不等于 expr != expr
- - -
& L 位与 expr & expr
- - -
^ L 位异或 expr ^ expr
- - -
L 位或 expr expr
- - -
&& L 逻辑与 expr && expr
- - -
L 逻辑或 expr expr
- - -
?: R 条件操作 expr
- - -
= R 赋值操作 lvalue = expr
*=, /=, %= R 复合赋值操作 expr *= expr等
+=, -= R 复合赋值操作 expr += expr等
<<=, >>= R 复合赋值操作 expr <<= expr等
&=, =, ^= R 复合赋值操作 expr &= expr等
- - -
throw R 抛出异常 throw expr
- - -
, R 逗号 expr, expr

举例

考虑:如果字符串不是以's'结尾则加上's',分析下列语句

string s = s + s[s.size() - 1] == 's' ? "" : "s";

分析:

根据上表知道优先级为:. = () = [] > - = + > == > ?: > =;可知上述语句的结合顺序是

(string s = (((s + (s[(s.size()) - 1])) == 's') ? "" : "s"));

很明显不能得到想要的结果,改成如下形式即可

string s = s + (s[s.size() - 1] == 's' ? "" : "s");

END.


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,881评论 4 368
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,052评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,598评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,407评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,823评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,872评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,037评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,778评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,505评论 1 247
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,745评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,233评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,568评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,231评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,141评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,939评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,954评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,784评论 2 275

推荐阅读更多精彩内容

  • •1 C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语...
    CONLYOUC阅读 8,628评论 9 66
  • 姓名:于川皓 学号:16140210089 转载自:https://www.zhihu.com/people/zh...
    道无涯_cc76阅读 627评论 0 3
  • 表达式和运算符 程序中最简单的表达式就是,程序中的常量 变量名也是一种简单的表达式 复杂的表达式是由简单的表达式组...
    zhaolion阅读 1,571评论 3 12
  • 高级运算符 文档地址 作为 基本运算符 的补充,Swift 提供了几个高级运算符执行对数传值进行更加复杂的操作。这...
    hrscy阅读 802评论 0 2
  • 就这样被老公鄙视了! "周二送我去车站吧"。"嗯。什么时候回来?""我还没买回程票呢!""就你这智商还出啥门儿呀!...
    月儿弯弯弯月儿阅读 304评论 0 0