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