Meaning of “+ +” operator (not ++)
为什么还要编译这段代码?"++"运算符的含义是什么?
1 2 3 4 5 6 7 8 9 10 11
| #include <string>
int main()
{
std::string c ="abc";
c = c + +"d";
c = c + + +"d";
c = c + + + +"d";
c = c + + + + +"d";
printf("%s
", c.c_str());
} |
- "名称是什么"的复制?>"C++中的运算符"????你们是吸毒者吗?
- @我只能关上它。如果你想重新打开并修复它,那就太好了。事后看来,我应该先等它关上,然后再修好。
- @纳撒诺利弗:问题已经解决了,里面有一个很好的骗局,所以现在没必要做任何事。但我对人们有时做的奇怪的事情摇头。
- 这种感觉是相互的。
- @轻盈凉爽的东西。希望你注意到我忍住了;
- @光照比氧化还原铁是一样的,在C中没有操作者-->,就像没有+ +一样。这些是被误认为是一个运算符的标记块。修复方法是修复人们对C标记化技术和语法的理解,正确解析构造,然后使用参考手册来理解实际运算符的含义。我之所以选择这个问题,是因为它是列表中第一个以副本形式出现的问题,这与运算符的聚集和认为它是一个问题有任何关系。
- @π?ε?ε?:lol我检查过;);)
- @卡兹:请在选择副本时格外小心。这不是比赛!:)
- @它让我很高兴让你快乐(或者至少笑):)
没有+ +运算符。这里有一个+操作符(以一元和二元形式出现),还有一个++操作符,这里不使用。
每一个都是一个二元+运算符,后面跟着一个或多个一元+运算符。
这是:
等于
这是:
相当于:
或:
诸如此类。
第一个+是一个二进制加法,用于计算c和第二个项的和。
其余的+是一元加运算符。在+"d"中,"d"为const char[2]型,衰变为const char*型。然后将+应用于不起作用的指针,并返回相同的const char*。
c + + +"d"相当于c + (+(+"d"))。
- "d"有const char[2]型,不是char[1]型,衰变为const char *型。
- 固定的。不确定它是否实际是const char* const(常量指针)
- 非类类型的prvalues不能是const或volatile限定的,所以它只是const char *。简单测试用例:const char * &&str ="str";。
这只是很多一元加号。