最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

switch語句與if-else語句的比較?

第一次代碼:(帶有明顯的if-else語句思維,運(yùn)行錯(cuò)誤那是肯定的)

#include<stdio.h>
int?main()
{
??int?score?=?87?;
??switch(score)
??{
	case(score>=90?&&?score?<=?100):
	printf("等級(jí)A\n");
????break;
	case(score>=80?&&?score?<?90):
	printf("等級(jí)B\n");
????break;
	case(score>=60?&&?score?<?80):
	printf("等級(jí)C\n");
????break;
	default:
	printf("等級(jí)D\n");
????break;
??}

??return?0;
}

第二次代碼:(干脆嘗試直接用if-else語句實(shí)現(xiàn))

#include<stdio.h>
int?main()
{
??int?score?=?87?;
	if(score>=90?&&?score?<=?100)
	{
	printf("等級(jí)A\n");
	}
????else?if(score>=80?&&?score?<?90)
	{
	printf("等級(jí)B\n");
	}
	else?if(score>=60?&&?score?<?80)
	{
	printf("等級(jí)C\n");
	}
	else
	{
	??printf("等級(jí)D\n");
	}
??return?0;
}

第三次代碼:(題目想要的結(jié)果)

#include?<stdio.h>
int?main()?
{
????int?score?=?87;?//考試分?jǐn)?shù)為87分?
????score?/=?10;
????switch(score)
????{
????????case?10:
????????case?9:
????????????printf("等級(jí)A");
????????????break;
????????case?8:
????????????printf("等級(jí)B");
????????????break;???????????
????????case?7:
????????case?6:?
????????????printf("等級(jí)C");
????????????break;
????????default:
????????????printf("等級(jí)D");
????????????break;????
????}
????return?0;
}

第一次是錯(cuò)的,屬于邏輯混亂,就不說了。

想討論一下對(duì)于這道題目而言,switch語句和if-else語句都可以實(shí)現(xiàn),那么請(qǐng)問有沒有孰優(yōu)孰劣的區(qū)別?

正在回答

1 回答

switch語句的case后必須是整型的常量表達(dá)式,你寫邏輯表達(dá)式就不合法。 你只能寫成第三次代碼的形式。

switch和if-else本身沒有什么優(yōu)劣之分,選擇哪種形式可視情況而定:

有時(shí)你想要判斷的變量值只是有限的幾種值,那用switch就很符合直覺,讀代碼也很容易理解。而且在case條目很多時(shí)編譯器會(huì)有額外的優(yōu)化,這樣會(huì)比if-else一步一步的判斷的計(jì)算量小。

而有時(shí)你可以預(yù)知你要判斷的變量是某個(gè)值的幾率更大,就可以先把這種情況寫到第一個(gè)if中,那么在大多數(shù)情況下只判斷這一個(gè)if就可以得到結(jié)果了,這樣寫成if-else形式就比寫成switch更好。

3 回復(fù) 有任何疑惑可以回復(fù)我~
#1

sanjiaofeng 提問者

非常感謝!
2015-07-04 回復(fù) 有任何疑惑可以回復(fù)我~
#2

sanjiaofeng 提問者

非常感謝! 您這么一解釋,我就明白了switch語句跟if-else語句在使用時(shí)其實(shí)還是有區(qū)別的。 對(duì)于這道題而言或許沒啥影響,但如果是比較復(fù)雜的情況或代碼,可能這種差別就顯現(xiàn)出來了吧。 之前主要是沒注意到case后面常量表達(dá)式這個(gè)重要的概念。糊里糊涂的就開寫了。
2015-07-04 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
C語言入門
  • 參與學(xué)習(xí)       927386    人
  • 解答問題       21538    個(gè)

C語言入門視頻教程,帶你進(jìn)入編程世界的必修課-C語言

進(jìn)入課程

switch語句與if-else語句的比較?

我要回答 關(guān)注問題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)