2012-09-02 41 views
0

我在Windows XP上使用DevC++作爲我的編譯器。這裏是我的代碼:更改變量後奇怪的輸出

#include<stdio.h> 
int main(void){ 
    int a; 
    printf("%d\n", a); 
    int b = a; 
    a = 10; 
    printf("%d %d %d", a, b, a); 
    getch(); 
    return 0; 
} 

輸出:

2 
10 2 10 

我不明白爲什麼變量a得到值2

回答

4
int a; 
printf("%d\n", a); 

未初始化的對象具有不確定的值。訪問未初始化的對象是未定義的行爲。如果您嘗試打印其值,則可能會打印242,或者您的應用程序可能會崩潰。

+0

好的,這是什麼意思?一個未初始化的變量,不會拋出一個錯誤,但會自動設置一些垃圾值在C? – Whiskey

+1

這意味着任何事情都可能發生,但最有可能打印一些垃圾。 – ouah

+0

那是weired然後..因爲與python相同的概念給了NameError,並且Java採用默認值爲0.謝謝..我想,編譯器有一些問題:) – Whiskey

0

變量a未由您初始化,因此它有一些隨機值。在另一個應用程序運行/計算機重新啓動後,它可能會等於另一個值。你必須指定一些值,以確保a等於它。

+1

不是「它會」,它*可能*等於另一個值。未定義的行爲不一定是不一致的。 –

+0

對不起,我的錯。 –

0

它必須是garbage value存儲在地址編譯器分配變量a,因爲它沒有初始化。

0

這是一個未定義的行爲。

我在我的電腦中用同樣的編譯器得到了4334。