2 if語句和1個if-else語句有什麼區別?這兩個'if'和'if-else'語句有什麼區別?
int x;
cin >> x;
if (x==10)
cout << "Hello";
if (x!=10)
cout << "Hey";
int x;
cin >> x;
if (x==10)
cout << "Hello";
else
cout << "Hey";
2 if語句和1個if-else語句有什麼區別?這兩個'if'和'if-else'語句有什麼區別?
int x;
cin >> x;
if (x==10)
cout << "Hello";
if (x!=10)
cout << "Hey";
int x;
cin >> x;
if (x==10)
cout << "Hello";
else
cout << "Hey";
不同之處在於,在第二種情況下,僅對條件進行檢查和計算一次。
在實踐中,優化器將可能使他們完全一樣。在這些情況下做的最好的事情就是嘗試一下 - 查看編譯器的彙編輸出,並且您將看到它們的區別。
您不可忽視的現代編譯器優化取消多餘的支票?整潔的...... **編輯**等等,沒辦法,cout和<<可以用一些欺騙來修改x:es內存,那麼編譯器怎麼知道提前發生了什麼? Oyy的! – Gleno
@Gleno,在這種情況下你可能是對的。讓我快速檢查一下。 –
在這個例子中,它們不會以相同的方式結束,這是肯定的。即使在我的'-Oz'情況下也有兩個比較。無論如何,答案的重要部分是「去看看,你可以找到」。 –
最重要的區別(在我看來)是第一種形式很難閱讀,而且更容易出錯。
第二種形式更像英文:「如果x是10,那麼做,否則做」,而第一種形式基本上使兩個子句無關。這很容易出錯,因爲如果你決定需要改變閾值10,那麼你需要在兩個地方更新它,而不僅僅是一個。
就執行速度而言,如果完全不同,我會感到非常驚訝。第一種形式會有兩種評估,但這是最少的問題。這當然不是你應該浪費時間優化的事情。
沒有可見的輸出差異。但是,它使你的代碼更容易,如果你使用的梯子來讀取一個
如果(X == 10)//只匹配,如果x爲數字10,然後處理器跳轉到下一行即
如果( X!= 10)//只匹配如果x不是數10
其中作爲 其他如果只檢查,如果數字是10或其他任何東西,然後10
在某種程度上都將導致相同,但它只是陳述的問題。
所以
所以它能夠更好地使用性能第二個
從維修性的角度來看第一個
所以,else
是要走的路。
在第一個塊中if語句將由編譯器運行...... 但是int第二個語句只會運行1個語句,因爲兩個語句都與單個條件鏈接。無論是否能夠真實,否則可真
你可以理解這是考慮到一日一爲「和」 type
:第二個是「或」型
你是不是指使用if-else的第二種情況? – greatwolf
@Victor,ayee,你是對的。 – Gleno
如果第二種情況是elseif聲明怎麼辦? – ddd