2017-09-17 58 views
-1
#include<stdio.h> 
void main(void) 
{ char m,n; 
    printf("%d\n",m);//value of m 
    printf("%d",n);//value of n 
} 

在上面的代碼片段中,m的值總是打印爲0爲什麼?爲什麼在多次編譯後它不會改變編譯是自動賦值的,如果我們不賦值,而n的值總是變化,每次我編譯時都會隨機更改?如果沒有分配,是否有任何固定的賦值給int和char?


我是否缺少任何概念?

+0

他們沒有任何價值;它們是未初始化的,它們的值是*不確定*。 – usr

+0

編譯器可能會生成將局部變量設置爲0的代碼,但不需要這樣做,也不違反C標準。由於某些原因不值得探索,值總是*發生*也可能爲0。無論哪種方式,您必須在閱讀之前專門設置該值。 –

回答

0

像你這樣的局部變量是自動變量。它們分配在堆棧內存上,它們的值是垃圾。

默認情況下,全局變量隱式具有靜態存儲類,其值爲0

由於m是一個局部變量,其值並不總是相同的。它是不確定的。該內存位置可以提供給其他進程。

相關問題