C++11中的bool变量不进行初始化,结果随机,可能是false也可能是true,所以一定要初始化
~~ 經(jīng)過驗(yàn)證,定義一個(gè)bool型數(shù)組而不賦初值, 每一個(gè)元素的值都為0 ~~
自己以前驗(yàn)證時(shí),數(shù)組長度小,結(jié)果帶有隨機(jī)性,打印出來全是0,誤以為不初始化時(shí)是false,這是錯(cuò)誤的,當(dāng)數(shù)組開大一點(diǎn),就會(huì)發(fā)現(xiàn),打印出來的既有0,也有非0值,非0值就是true。
經(jīng)過實(shí)驗(yàn),發(fā)現(xiàn)除了bool數(shù)組,對于單個(gè)或者多個(gè)bool變量來說,不初始化的話,其值也是隨機(jī)的。
#include<iostream> using namespace std; int main() {bool a,b,c,d,f,e,g,h,i,j,k,l,m,n;cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<" "<<g<<" "<<h<<" "<<i<<" "<<j<<" "<<k<<" "<<l<<" "<<m<<" "<<n<<endl;bool x,y,z;cout<<x<<" "<<y<<" "<<z<<endl;bool x1,y1,z1;cout<<x1<<" "<<y1<<" "<<z1<<endl;bool x2=-56;if(true==x2) cout<<"負(fù)數(shù)(-56),bool值為true" <<endl;else if(false==x2) cout<<"負(fù)數(shù),bool值為false" <<endl; }
此為上面代碼的運(yùn)行結(jié)果。
C++中,bool類型的數(shù)值非0代表真。數(shù)值0表示false(假)。
也就是說,bool變量占一個(gè)字節(jié),當(dāng)它是負(fù)數(shù)或者正數(shù)時(shí)都為真,為0時(shí)為假。
布爾型變量的值只有 真 (true) 和假 (false)。
網(wǎng)上一句話說得挺好:“bool變量在java里默認(rèn)是false, C+ +里沒有規(guī)定,所以依賴編譯器實(shí)現(xiàn),千萬不要讓編譯器決定你的默認(rèn)值,永遠(yuǎn)初始化”
總結(jié)
以上是生活随笔為你收集整理的C++11中的bool变量不进行初始化,结果随机,可能是false也可能是true,所以一定要初始化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ string类中的find()函
- 下一篇: C/C++中.和-的用法区别