-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?
我是否缺少任何概念?
他們沒有任何價值;它們是未初始化的,它們的值是*不確定*。 – usr
編譯器可能會生成將局部變量設置爲0的代碼,但不需要這樣做,也不違反C標準。由於某些原因不值得探索,值總是*發生*也可能爲0。無論哪種方式,您必須在閱讀之前專門設置該值。 –