天天看點

面試題系列之&和&&的差別

&和&&都可以用作邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都為true 時,整個運算結果才為true,否則,隻要有一方為false,則結果為false。

既然存在兩個運算符,那麼他們之前肯定還是有差別的。&&還具有短路的功能,即如果第一個表達式為false,則不再計算第二個表達式,整個條件都為false。例如,

int i=0;
	string g="adb";
	if(i!=0 && g.length==0){
		.....
	}
           
int i=0;
	string g="adb";
	if(i!=0 & g.length==0){
		.....
	}
           

因為i=0,是以表達式i!=0傳回的是false,那麼&&後面的表達式便不再執行。整個if條件都為false,如果将&&換成&,雖然i!=0傳回的是false,但是表達式g.length==0還是要執行,整個if條件也傳回的是false。

&還可以用作位運算符,當&操作符兩邊的表達式不是boolean類型時,&表示按位與操作,我們通常 使用0x0f來與一個整數進行&運算,來擷取該整數的低4個bit位,例如,0x31 & 0x0f的結果為0x01。