簡體   English   中英

c ++ 14值初始化問題

[英]c++14 value initialization issue

誰知道在本例http://ideone.com/Cqer9Z中,本地i_local值是否已初始化為零?

#include <iostream>
using namespace std;

int main() {

    int i_local; // automatic storage duration, not static

    cout << "Value of i_local: " << i_local << endl; // (2-3) value is undetermined
}

它隨自動存儲持續時間而變化,並且根據標准應該具有未確定的值。

在我的本地計算機(c ++ 11)中,它未確定,但在ideone(c ++ 14)中歸零。

完全,標准說(重點補充):

當獲得具有自動或動態存儲持續時間的對象的存儲時,該對象具有不確定的值,並且如果沒有對該對象執行初始化,則該對象保留不確定的值,直到該值被替換(5.18)。 [...] 如果評估產生了不確定的值,則行為是不確定的,除了[在某些無關的情況下......]

你有未定義的行為。 它可以打印0,它可以打印50,它可以打印亂碼,或者它可以擦拭你的硬盤。

零是int的值之一,因此將未確定值的int設為零是完全合法的。

此外,甚至嘗試讀取該整數是UB,因此您看到的值在定義上毫無意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM