C ilan, başlatılmamış bir değişken ne olur? Bir değeri var mı?
Soru-- C yazarsam hızlı:
int num;
Ben atamadan önce bir şey num
num
değeri belirsiz.
CEVAP
Statik değişkenler (kapsam dosya ve statik fonksiyon) sıfır olarak başlatılır:
int x; // zero
int y = 0; // also zero
void foo() {
static int x; // also zero
}
Non-statik değişkenler (yerel değişkenler)belirsiz. Bir değer atamak için önce onlara okuma tanımsız davranış oluşur.
void foo() {
int x;
printf("%d", x); // the compiler is free to crash here
}
Pratikte, bir eğilim sadece bazı anlamsız değer; ilk başta bazı Derleyiciler bile koymak belirli, sabit değerler için belli zaman isteyen bir hata ayıklayıcı - ama açık konuşmak gerekirse, derleyici ücretsiz bir şey yapmak için gelen sesiyle çağırma demons through your nasal passages.
Tanımsız davranış "yerine, çeşitli türleri için. onların temsil ek bayrak bit İŞLEMCİ mimarisi vardır" tanımsız/rastgele değer, sadece neden olarak Modern bir örnek tabii ki the Itanium, which has a "Not a Thing" bit in its registers; standart hazırlayanlar bazı eski mimarileri dikkate alındı C olurdu.
Bu bayrak biti set değeri ile çalışmak için çalışıyor, bir işlem CPU bir özel durum neden olabilirgerçektengerekmiyor başarısız (örneğin, tamsayı toplama, ya da başka bir değişken atama). Ve eğer bir değişken başlatılmamış gidersen bırak, derleyici bu bayrak biti set ile bazı rasgele çöp - başlatılmamış değişken ölümcül olabilir dokunmadan anlamını yakalar.
Neden benim değişken sonra tam ben bir...
Apache Special direktifleri ortam deği...
Sadece Python herhangi bir değer atama...
Java ile aynı değeri birden çok değişk...
İlan özellikleri ilgili bir örnek gere...