爲什麼這段代碼甚至可以編譯? 「+ +」運算符的含義是什麼?「+ +」運算符的含義(不是++)
#include <string>
int main()
{
std::string c = "abc";
c = c + + "d";
c = c + + + "d";
c = c + + + + "d";
c = c + + + + + "d";
printf("%s\n", c.c_str());
}
爲什麼這段代碼甚至可以編譯? 「+ +」運算符的含義是什麼?「+ +」運算符的含義(不是++)
#include <string>
int main()
{
std::string c = "abc";
c = c + + "d";
c = c + + + "d";
c = c + + + + "d";
c = c + + + + + "d";
printf("%s\n", c.c_str());
}
沒有+ +
運營商。有一個+
運算符(它以一元和二元形式出現)和一個運算符++
,這裏不使用。
每個那些的是二進制+
操作者,接着通過一個或多個一元+
運營商。
此:
c = c + + "d";
等同於
c = c + (+ "d");
此:
c = c + + + "d";
相當於:
c = c + (+ + "d");
或:
c = c + (+ (+ "d"));
等等。
第一+
是二進制加,其計算的c
總和,第二項。
其餘+
是一元加運算符。在+ "d"
,"d"
類型爲const char[2]
,衰減到const char*
。然後+
被應用於沒有效果的指針,並返回相同的const char*
。
c + + + "d"
相當於c + (+(+"d"))
。的_
複製「什麼的名字 - ‘’在C++運算符」> _ ???你是吸毒人員嗎? –
@LightnessRacesinOrbit我只能關閉。如果你想重新打開並修復它,那會很好。在後面我應該等待它先關閉然後修復它。 – NathanOliver
@NathanOliver:問題已經結束,這裏有一個很好的投資,所以現在沒有任何意義。但是我常常爲人們奇怪的事情搖頭。 –