找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
請尊重及感激所有版主付出和奉獻發表文章前請先閱讀相關版規尊貴會員無限使用任何功能
巨乳三上悠亜七龍珠波多野結fc2mg 無碼
premi夜的鋼琴索命倒數棄婚夫に言え性愛魔法少女

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]怪人的沙拉碗03-

[繁]魔法科高中的劣等

晴天 體驗台灣特色檳

女子搧別人耳光的後果

[繁]老夫老妻重返青春

[繁]無職轉生 第二季1
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 2853|回復: 17
打印上一主題下一主題

[問題](已解決) 一般來說 if 跟 switch那一個效率會比較好 關閉[複製鏈接]

lovepage 該用戶已被刪除
跳轉到指定樓層
樓主
發表於 2015-4-22 09:48 AM|只看該作者|倒序瀏覽
本帖最後由 snowflying 於 2015-7-24 02:19 AM 編輯

A:

if(A==1)
....
else if(A==2)
..
esle if(A==3)
..
..
..



B:
switch(B)
{
case 1:
break;
case 2:
break;
..
..
..

default:
break;
}

分享分享0收藏收藏0支持支持0
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

Rank: 2Rank: 2

帖子
380
積分
462 點
潛水值
12130 米
頭香
發表於 2015-4-22 07:23 PM|只看該作者
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php
如果是我,基本上不會去比較這個,
畢竟switch的應用比較簡單,case 後面判斷的是字元或數值。
如果是判斷是否在範圍內,反而比較麻煩,更何況是字串。
相較起來,if 的判斷式能比較複雜。
Ex:
  1. if(A>10 && A<=30)
  2. ...
複製代碼
但是switch也不是沒有優點,
如果有一大串沒有規則性的卻要做同一段程式時,
用if 就感覺底較乾淨,
就能發揮switch的優點。
Ex:
  1. switch(B)
  2. {
  3. case 1:
  4. case 2:
  5. case 4:
  6. case 5:
  7. case 8:
  8. case 11:
  9.     //function1
  10.     ...
  11.     break;
  12. case 14:
  13.     //function2
  14.     ...
  15.     break;
  16. default:
  17.     ...
  18.     //function3
  19. }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
--
人人有把握,各個沒機會。
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

ming2348381 該用戶已被刪除
3
發表於 2015-4-22 08:35 PM|只看該作者
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
我已經忘記在哪看到了,也已經是很久遠以前的印象了
if在每次比較的時候,都會做複製的動作
而switch只有在switch(B)做一次複製的動作


現代的編譯器應該不會有我說的那個現象了?

使用道具檢舉

Rank: 2Rank: 2

帖子
1051
積分
617 點
潛水值
27310 米
4
發表於 2015-4-23 09:29 AM|只看該作者
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。
一你的例子下. switch 會比較好. if 會比較差.
其他情況. 不一定.
只有適合用途. 來決定用什麼
必盡 C 的switch case 功能有限
C 的switch(X)  x 必須是整數類型別, 字串, 浮點不能
case 也只能是單一個整數.

if 就無此限制.
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

帖子
100
積分
93 點
潛水值
9200 米
5
發表於 2015-4-23 01:18 PM|只看該作者
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。
編譯後應該是完全相同→依情形挑一個可讀性最高的




使用道具檢舉

帖子
54
積分
29 點
潛水值
3670 米
6
發表於 2015-4-23 04:53 PM|只看該作者
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
沒有固定哪一個效率會比較好,以你的例子 如果只有if ..else if 當然if else 的效率會比較好,但是如果有很多的if..else if.... 那switch case 編譯後的效率應該會比較好。

使用道具檢舉

lovepage 該用戶已被刪除
7
發表於 2015-4-24 09:38 PM|只看該作者
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php
我的描述上可能不夠明確.
舉個例子來說,如果A跟B都是同一個值,當這個值有10000種變化的時候
這2種function 哪一種對於cpu比較節省?
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

hatakc56923us 該用戶已被刪除
8
發表於 2015-4-24 11:29 PM|只看該作者
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
lovepage 發表於 2015-4-24 09:38 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

我的描述上可能不夠明確.
舉個例子來說,如果A跟B都是同一個值,當這個值有10000種變化的時候
這2種function  ...
...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

帖子
22
積分
0 點
潛水值
7360 米
9
發表於 2015-4-25 01:35 AM|只看該作者
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php
switch 比較好阿, 大概快個 1us吧.
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

Rank: 1

帖子
83
積分
119 點
潛水值
9417 米
10
發表於 2015-4-25 02:18 AM|只看該作者

使用道具檢舉

bkmambaaaa 該用戶已被刪除
11
發表於 2015-4-25 02:22 PM|只看該作者
lovepage 發表於 2015-4-24 09:38 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

我的描述上可能不夠明確.
舉個例子來說,如果A跟B都是同一個值,當這個值有10000種變化的時候
這2種function  ...
...
瀏覽完整內容,請先 註冊登入會員
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

fb15 該用戶已被刪除
12
發表於 2015-4-29 06:44 PM|只看該作者
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
如果是考量效率,
並不會特別在if/switch的差異上特別作考量
而是優先考慮程式執行此段code的頻率有多高

如果執行頻率不夠高, 例如每分鐘甚至每小時才會偶爾跑到一次
實際上程式效能實在沒有什麼差

如果是在一個迴圈中要處理非常多次, 那麼看有多少case,
case很多的話, 如樓上舉例有10000種,
就應該至少多寫一些程式碼建立成表,要處理的內容可改用function point與case連結
...
瀏覽完整內容,請先 註冊登入會員
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

帖子
159
積分
5 點
潛水值
7837 米
13
發表於 2015-5-23 03:28 PM|只看該作者
主要還是要看compilier怎麼寫的
有看過一個人分析的不錯

For example:

switch(n){
   case 0:
        fun0();
        break;
   case 1:
        fun1();
        break;
   case 2:
        fun2();
        break;
...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
122
積分
268 點
潛水值
29130 米
14
發表於 2015-5-25 10:39 AM|只看該作者
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
效率:你指的是跟人溝通的效率或執行效率
1. 執行效率交給編譯器就可以了
2. 如果下跟人溝通的效率 : 原則是三個以內用if,以上 用switch
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

Rank: 1

帖子
271
積分
191 點
潛水值
4857 米
15
發表於 2015-6-4 01:59 AM|只看該作者
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。
本帖最後由 sonic0103 於 2015-6-4 02:31 AM 編輯

我常用習慣是這樣:
有明確的目標做選擇(它是一個A、它等於B) → switch
模糊、比較、或者其一範圍(它是一個x嗎?、它存在於a~b之間) → if

而有時又為了可讀方便,if部分會使用?比較來取代
所以根據範例的話,單純只有用 if(a == b)的條件,就會改用switch





使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部