1. 程式人生 > >邏輯或 ‘||’ ,原來你是這樣的

邏輯或 ‘||’ ,原來你是這樣的

前兩天做了一道題:輸出 1~100 之間出現 9 的次數。
這道題算是讓我差點掉到 或 ‘||’ 的坑裡,所幸我一開始的程式是對的,對比之後發現了問題所在,我們來看程式:
int main()
{
	int i, count = 0;
	for(i = 1; i <= 100; i++)
		{
			if(i%10 == 9)
			 count++;
	                if(i/10 == 9)
		         count++;
	    }
	printf("%d\n", count);
	system("pause");
	return 0;
}

在這裡插入圖片描述 我當時就想的是兩者中間用 或 ‘||’ 豈不是能使程式更簡單,但是執行出來結果少了一次:

int main()
{
	int i, count = 0;
	for(i = 1; i <= 100; i++)
		{
			if((i%10 == 9)||(i/10 == 9))
		     count++;
	    }
	printf("%d\n", count);
	system("pause");
	return 0;
}

在這裡插入圖片描述 原因是 || 的第一個運算元為真時就不會計算第二個操作數了。僅當第一個運算元的計算結果為 false (0) 時計算第二個運算元。在邏輯"或"表示式為 true 時,這將消除對第二個運算元的不必要的計算。 所以在計算 99 的時候,第一個運算元為真,就不會計算第二個操作數了,也就是少計算了一次出現9的次數。