首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

运算符优先级的有关问题: 前后都有运算符,是"右结合"优先吗

2012-09-06 
运算符优先级的问题: 前后都有运算符,是右结合优先吗?例如,我定义一个map类型:std::mapsize_t,string

运算符优先级的问题: 前后都有运算符,是"右结合"优先吗?
例如,我定义一个map类型: 
std::map<size_t,string> mm; 
... 
auto iterator=mm.begin; 
size_t x=++iterator->first;//问题在这里。 
请问上面这句应该是先迭代器+1再返回first给x 
还是返回当前迭代器引用的first+1的值? 
  
也就是++和->都出现在iterator周围,那么是优先++呢(优先级高)还是右结合operator->优先? 
这个C++标准有确定的说法么? 


[解决办法]
从来不记各种符号的优先级
一贯使用单括号来控制运算次序

楼主的问题我不知道答案,我只说这个答案不必知道也没关系
[解决办法]
查一下优先级吧,应该是->优先级高。
[解决办法]
分成2个语句吧
[解决办法]
事实上前置++的优先级是低于->的。基本规则是前置的(如*,&,-,!等)都低于后置的(如[],(),.,->,)

++,--的特殊性:
许多地方将前置++与后置++放在一起,用右结合性来区别,也能区分开来

本例“=++iterator->first”
用优先级解释,后置的->高于前置的++,所以++(iterator->first),++的对象是first
用结合性解释,右面的->先结合,(iterator->first),++后结合,++的对象仍是first

热点排行