最近,我翻過一個C++代碼如下所示:不明確的if和else分支:是否定義了行爲?
if(test_1)
if(test_2)
{
// Do stuff
}
else
exit(0);
這是模糊的,因爲編譯器可以看到這是:
if(test_1)
{
if(test_2)
{
}
else
{
}
}
或爲:
if(test_1)
{
if(test_2)
{
}
}
else
{
}
是此代碼根據任何標準(C,C++)定義的行爲?我在VC++的C++程序中看到了這個代碼,這似乎是首選解決方案。
這不是*模棱兩可*,因爲標準決定了它是如何被解析的,它可能*看起來對你來說模棱兩可,但它不會讓編譯器或其他程序員知道它是如何被解析的。 –
你可能想閱讀:http://en.wikipedia.org/wiki/Dangling_else和這個:http://drdobbs.com/blogs/cpp/231602010。 – sbi