小幹探
很多開發人員都有過這樣的經歷,當被一些稀奇古怪的問題折騰得精疲力盡時,就開始懷疑開發環境的問題,懷疑編譯器的問題,懷疑運行時的問題,甚至開始懷疑人生[捂臉]
沒錯,我也遇到過,不過最終發現,開發環境、編譯器和運行時出 bug 的概率太低了,比買雙色球中獎的概率還低。問題還是自己的問題,只是定位問題的過程比較曲折而已。
題主所說的問題大概有這兩種情況:
1,定義變量沒賦初值,這種情況下變量值是不確定的,可以是任何值,也可能是 0。
2,變量在某個時候被其他地方修改了,如通過指針的方式修改,或調用函數時引用傳參並被修改。 這兩種方式在代碼層面可能不太直觀,容易被忽略。
所以題主可以試下按照我說的情況加以分析定位問題。
熙爸愛釣魚
char[3];
uint8 i;
char="ABCD";
//字符串賦值時會在字符串的最後自動加上一個0x00,此時就會把後面的整數i變成0了。
還有一種可能,是你定義了一個char變量,但是賦值的時候你用了雙引號,就變成了字符串賦值了。如char a="A"; //此時會給a賦一個值'A',同時在後面一個BYTE中寫一個0正好就是整數i的位置,i就被清零了。
認為錯了的告訴我哪錯了。
芝麻小龍
應該是你代碼的bug,不是語言的bug,內存對齊,內存洩露,運行時存在野指針訪問表像都有可能是你所謂的問題,但絕對不是語言的問題。
LegendaryMK
初始化的問題吧,或者說你定義的變量是全局變量,重新進來的時候又初始化了。問題描述的不清楚,開發平臺是什麼。最好把代碼放上來看看
小羊看科技
你咋不說Python的round四捨五入?個別不準確。還有小數相加會多0.00000000000xxx
IT小白鼠
上代碼啊,你的表述沒人看懂
a不帥的大叔a
這個問題簡直太扯了,自己檢查下代碼,尤其是符號和括號什麼的
鋼鐵皮皮蝦
誰跟我一樣是碼農,編譯一個程序要花上二十分鐘,無聊的等待,來刷頭條。
題主說的這個不是語言問題,一般都是自己變量初始化,或者編譯器問題,刪除編譯文件重新編譯試一試。
阿財201811
定義整型變量後你不給他賦值,直接輸出就是0,devC++實測
1976553400
局部變量未初始化的是隨機值(esp棧-sizeof(type)保留位置罷了,內容是垃圾值)。
全局/靜態未初始化變量是在 bss段,運行時全零化(.lcomm varName N指定字節罷了)