c語言輸出結(jié)果一直是0 c語言結(jié)果總是為0,為什么?
c語言結(jié)果總是為0,為什么?C語言運行結(jié)果總是0的原因很多。讓我們先談談C語言的常識。C語言對變量的類型有嚴格的要求。對子例程的返回類型也有許多要求。如果變量的定義和傳遞中存在錯誤,則直接返回值為0。
c語言結(jié)果總是為0,為什么?
C語言運行結(jié)果總是0的原因很多。
讓我們先談談C語言的常識。C語言對變量的類型有嚴格的要求。對子例程的返回類型也有許多要求。如果變量的定義和傳遞中存在錯誤,則直接返回值為0。
舉幾個例子。
1,長浮點到整數(shù)的轉(zhuǎn)換
int a;
double B=0.42586
a=(int)B;
printf(“a=d%”,a)
輸出a=0
2,強制整數(shù)函數(shù)int
float f=0.786
int(f)值為0
所有這些。
發(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ù)我說的情況來分析定位問題。
字符的話輸出為0,數(shù)字輸出為1,用c語言表示?
因為您的子例程int是整數(shù)(char*STR)
只確定開頭的第一個字符是否是數(shù)字。如果是數(shù)字,則返回1,而不是0。
如果第一個字符是減號,請判斷第二個字符。如果第二個字符是數(shù)字,則返回1,而不是數(shù)字,返回0。
因此輸入12123wew,根據(jù)上述原則,第一個字符是一個數(shù)字,因此返回1。
如果修改為:
If(STR[0]=“-”)STR
for(I=0str[I]!=“0”I)f(!IsDigit(STR[i])返回0
返回1
,然后判斷整個字符串,只有當它是所有數(shù)字時才返回0。