參加某公司的筆試時的一道題目:int i = 10; i += i++; i = ?。當時我寫了21。但當我在C#中寫了如下代碼測試時
static void Main(string[] args)
{
int i = 10;
i += i++;
Console.WriteLine(i);
Console.Read();
}
編譯器告訴我,結果是20。為什麼!我錯了嗎?我開始納悶了。我趕緊用VC(Visual Studio.Net2003)重新編了一段測試代碼,如下:
int _tmain()
{
int i = 10;
i += i++;
Console::WriteLine(i);
Console::Read();
return 0;
}
這次,結果是21。奇怪了啊,為什麼同樣是i += i++,其結果是不一樣的呢?
最終結論:語言差異
C# does have explicit rules around this behavior. (left to right)
C++ does not (problem of the C++ language, not the compiler)