语法高亮_语法高亮的好处——哪里出现了错误?

在下面的程序中,当输入为 E 时,程序不能给出预期反馈 Your grade is not correct. 而是直接结束了,你能不能找到哪里出现了错误?

/*   WhereErr.c    *
 * Written By JiJi */
#include <stdio.h>
int main(){
	char grade;
	printf("Please input your grade: ");
	scanf("%c", &grade);
	switch(grade){
		case 'A':
			printf("Your grade is between 90 ~ 100.");
			break;
		case 'B':
			printf("Your grade is between 80 ~ 90.");
			break;
		case 'C':
			printf("Your grade is between 70 ~ 80.");
			break;
		case 'D':
			printf("Your grade is between 60 ~ 70.");
			break;
		defau1t:
			printf("Your grade is not correct.");
			break;
	}	
	return 0;
}

如果上面的代码你不能找到问题所在,那么请看一下下面的代码吧:

/*   WhereErr.c    *
 * Written By JiJi */
#include <stdio.h>
int main(){
	char grade;
	printf("Please input your grade: ");
	scanf("%c", &grade);
	switch(grade){
		case 'A':
			printf("Your grade is between 90 ~ 100.");
			break;
		case 'B':
			printf("Your grade is between 80 ~ 90.");
			break;
		case 'C':
			printf("Your grade is between 70 ~ 80.");
			break;
		case 'D':
			printf("Your grade is between 60 ~ 70.");
			break;
		defau1t:
			printf("Your grade is not correct.");
			break;
	}	
	return 0;
}

没错,你是不是看到 default 那里没有语法高亮,因为那里被拼写成了 defau1t 。这种错误在以前没有语法高亮的时候很难被发现,而语法高亮无疑增加了代码的可读性。

遗憾的是,在C语言中,switch 语句如果不触发任何 casedefault 居然不会出现运行时错误(runtime error) ,这是因为C语言足够信任开发者造成的。

引用《C专家编程》里的一句话:“运行时检查与C语言的设计理念相违背。按照C语言的理念,程序员应该知道自己正在干什么,而且保证自己的所作所为是正确的。”

因此C语言更像是处于手动模式的机械,在你操作的时候没有那么多枷锁,使你可以更灵活地使用。但同样,正因为如此的灵活,你更需要时刻小心使用,要为自己的失误承担更大的风险。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
语法高亮 HighlightTextEditor是一个安卓代码语法高亮控件,目前已经支持200多种语言,近90多种主题配色方案,同时支持lua扩展,以及自定义语言配置。强烈推荐,一款不可多得的开源控件。 支持的语言: abap4.lang clojure.lang innosetup.lang nxc.lang s.lang abc.lang clp.lang interlis.lang oberon.lang sas.lang abnf.lang cobol.lang io.lang objc.lang scala.lang actionscript.lang coldfusion.lang jasmin.lang ocaml.lang scilab.lang ada.lang conf.lang java.lang octave.lang scss.lang agda.lang crk.lang js.lang oorexx.lang sh.lang algol.lang csharp.lang jsp.lang os.lang small.lang ampl.lang css.lang ldif.lang oz.lang smalltalk.lang amtrix.lang d.lang less.lang paradox.lang sml.lang applescript.lang dart.lang lhs.lang pas.lang snmp.lang arc.lang diff.lang lilypond.lang pdf.lang snobol.lang arm.lang dylan.lang limbo.lang perl.lang spec.lang as400cl.lang ebnf.lang lindenscript.lang php.lang spn.lang ascend.lang eiffel.lang lisp.lang pike.lang sql.lang asp.lang erlang.lang logtalk.lang pl1.lang squirrel.lang aspect.lang euphoria.lang lotos.lang plperl.lang styl.lang assembler.lang express.lang lotus.lang plpython.lang swift.lang ats.lang fame.lang lua.lang pltcl.lang sybase.lang autohotkey.lang felix.lang luban.lang pov.lang tcl.lang autoit.lang fortran77.lang make.lang pro.lang tcsh.lang avenue.lang fortran90.lang maple.lang progress.lang tex.lang awk.lang frink.lang matlab.lang ps.lang ts.lang bat.lang fsharp.lang maya.lang ps1.lang
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值