讀取未初始化的變量會導致未定義的行爲,例如,讀取未初始化的變量
#include <iostream>
int main()
{
int a;
std::cout << a << std::endl; // undefined behavior
}
有人可以正式解釋這個事實嗎?
讀取未初始化的變量會導致未定義的行爲,例如,讀取未初始化的變量
#include <iostream>
int main()
{
int a;
std::cout << a << std::endl; // undefined behavior
}
有人可以正式解釋這個事實嗎?
這裏是有關部分,我想:
4.1左值到右值轉換
1 - 非功能的glvalue,非陣列類型T可以被轉換爲一個prvalue。如果T是不完整的 類型,則需要此轉換的程序不合格。如果 到的glvalue是指不爲類型T的對象和 不是來自T,或者如果對象派生的類型的對象是 未初始化的對象,即必要這種轉換的程序具有 未定義行爲。
一個變量是一個左值,我認爲「右值轉換」是一個變量的值的過程。 (注意 - 我不熟悉C++標準,所以我可能沒有找到適用於這個例子的部分,我所做的只是搜索PDF「未初始化」,然後尋找看起來最相關。)
啊,我不認爲它可能會出現在該部分,謝謝。 –
它不會出現在C++ 14標準中。 –
我沒有C++ 14標準的副本。使用Google可以找到的早期標準草案。 (支付的標準很爛!) –
你想要某人_define_未定義的行爲? –
@HoboSapiens不,我想了解爲什麼讀取未初始化的變量是UB。 –
因爲C++規範這麼說......我想象。你問過之前你有沒有嘗試讀過它?或者你只是要求別人爲你閱讀規範? (在後一種情況下......你需要別人來閱讀你的答案嗎?:-)) –