-1
#include <iostream>
#include <string>
using namespace std;
int main(){
string x;
x = not false and true;
cout << x << endl;
}
爲什麼此代碼在運行時輸出笑臉?這段代碼輸出笑臉是什麼?
#include <iostream>
#include <string>
using namespace std;
int main(){
string x;
x = not false and true;
cout << x << endl;
}
爲什麼此代碼在運行時輸出笑臉?這段代碼輸出笑臉是什麼?
代碼沒有問題。
not false and true
相當於!false && true
即1
。然後您使用std::string::operator=(char)
將值分配給x
。 char
的值爲1
顯然意味着您的系統上會出現一個笑臉。
有關記錄,此代碼不會在MSVC 2010上編譯,抱怨'不'和'和'不是關鍵字。 –
@WilliamCustode:爲了記錄,這是自2008版以來的msvc中的一個bug。可以通過包含定義'not','和'等的3rdparty頭部來修復。根據[boost forums list](http ://boost.2283326.n4.nabble.com/the-not-keyword-td3865759.html),'#include'應該修復它。 –
SigTerm
啊,很高興知道。我儘可能多地假設,但是找不到任何來自MS的消息,聲稱這是一個已知的錯誤。如果它是一個標準,你應該參考提及它的標準部分。 –