數(shù)組未賦值是空還是0 發(fā)現(xiàn)一個(gè)C語(yǔ)言BUG,定義int變量時(shí)靠近c(diǎn)har的變量會(huì)變成0,是什么原因?
發(fā)現(xiàn)一個(gè)C語(yǔ)言BUG,定義int變量時(shí)靠近c(diǎn)har的變量會(huì)變成0,是什么原因?許多開(kāi)發(fā)人員都有過(guò)這樣的經(jīng)歷。當(dāng)他們被一些奇怪的問(wèn)題弄得精疲力盡時(shí),他們開(kāi)始懷疑開(kāi)發(fā)環(huán)境、編譯器、運(yùn)行時(shí),甚至生命周期。是
發(fā)現(xiàn)一個(gè)C語(yǔ)言BUG,定義int變量時(shí)靠近c(diǎn)har的變量會(huì)變成0,是什么原因?
許多開(kāi)發(fā)人員都有過(guò)這樣的經(jīng)歷。當(dāng)他們被一些奇怪的問(wèn)題弄得精疲力盡時(shí),他們開(kāi)始懷疑開(kāi)發(fā)環(huán)境、編譯器、運(yùn)行時(shí),甚至生命周期。是的,我也遇到過(guò),但是我最終發(fā)現(xiàn)開(kāi)發(fā)環(huán)境、編譯器、運(yùn)行時(shí)都有漏洞,中獎(jiǎng)概率太低,比中獎(jiǎng)概率低。問(wèn)題還是我們自己的,但定位問(wèn)題的過(guò)程比較曲折。
在這種情況下,變量的值是不確定的。它可以是任意值或0。
2. 變量在某個(gè)時(shí)間會(huì)被其他地方修改,例如通過(guò)指針修改,或者在調(diào)用函數(shù)時(shí)通過(guò)引用修改。這兩種方法在代碼級(jí)別可能不是很直觀,很容易被忽略。
所以受試者可以根據(jù)我說(shuō)的情況來(lái)分析定位問(wèn)題。
靜態(tài)變量不是不能被重新初始化賦值嗎?
靜態(tài)變量?jī)H存在于本地函數(shù)域中,但當(dāng)程序執(zhí)行離開(kāi)此域時(shí),它們的值不會(huì)丟失。聲明方法是:static$name=value,其中static是聲明靜態(tài)變量的關(guān)鍵字,$name是變量的名稱(chēng),value是變量的值。&是嗎?Phpfunctiontest(){static$AA=0echo$AA$AA}?>變量$AA在第一次調(diào)用test()函數(shù)時(shí)初始化。每次調(diào)用test()函數(shù)時(shí),都會(huì)輸出$AA的值,1
c 中定義一個(gè)變量一定要賦初值嗎?
可能不是必需的。是否分配初始值根據(jù)編程的實(shí)際需要確定。1對(duì)于全局變量和局部靜態(tài)變量,如果沒(méi)有初始化值,則默認(rèn)值為0。因此,當(dāng)這類(lèi)變量的初值要求為0,或者不考慮初值時(shí),在定義時(shí)不需要賦初值,這樣可以提高效率。2對(duì)于局部變量,如果沒(méi)有初始值,那么默認(rèn)值是隨機(jī)的,即任何值都是可能的。對(duì)于這類(lèi)變量,如果其初始值不重要,或者不會(huì)影響程序的結(jié)果,例如定義后,下一步就是輸入代碼從其他通道獲取值,那么初始值就不能賦值。