为什么有些语言if语句有endif,而有些语言没有?
2013-04-20 14:49
295 查看
这不是技术问题,只是平时有没有注意到并且去考虑而已。而我也就今天突然想到
今天在写Makefile,在一个else语句之后想了一下有没有endif,这时突然意识到必须要有这个endif,
因为如果没有这个endif,那么这个else语句就无法判断到哪个语句结束,
比如下面的语句,能断定第10行是属于else语句吗?或者断定第10行不属于else语句吗?
所以这时必须要有个endif来界面到底哪些语句是属于else语句执行的。
而在C语言中,由于有大括号{}来界定语句的执行范围,所以就不需要endif了。或者说{}的功能与endif功能相当。
而在类似python这类语言,直接用缩进来表示执行范围的,再用endif就画蛇添足了。
今天在写Makefile,在一个else语句之后想了一下有没有endif,这时突然意识到必须要有这个endif,
因为如果没有这个endif,那么这个else语句就无法判断到哪个语句结束,
比如下面的语句,能断定第10行是属于else语句吗?或者断定第10行不属于else语句吗?
5 ifeq ("${DEBUG}", "y") 6 CFLAGS += -g -Wall -fPIC -shared -lpthread 7 IFLAGS = -m 644 -s -v 8 else 9 CFLAGS += -O2 -Wall -fPIC -shared -lpthread 10 DFLAGS += -DDEBUG 11 LINUX_DIR = ../../../linux当然不能,因为Makefile的语法解析不是根据缩进来判断的。实际上else语句会一直执行第10,11行
所以这时必须要有个endif来界面到底哪些语句是属于else语句执行的。
而在C语言中,由于有大括号{}来界定语句的执行范围,所以就不需要endif了。或者说{}的功能与endif功能相当。
而在类似python这类语言,直接用缩进来表示执行范围的,再用endif就画蛇添足了。
相关文章推荐
- IE下判断IE版本的语句...[if lte IE 6]……[endif]兼容css解释
- IE下判断IE版本的语句:[if lte IE 7]...[endif] [转]
- IE下判断IE版本的语句...[if lte IE 6]……[endif]
- IE下判断IE版本的语句...[if lte IE 8]……[endif]
- 判断IE版本的HTML语句详解<!--[if IE]> <![endif]--> - AnswerCard
- 为什么j2ee的web研发过程中,有些jsp、html页面中,没有引入某个js(如test.js),却使用了test.js的某个函数,并且系统能够正常运行??
- 【C语言基础】“输入三次密码”的操作。(for循环,if语句)
- 忽然发现,if语句没有相应的continue功能
- java的引用明明和指针没什么本质区别,java为什么还宣称没有指针并把这个当作语言的优点?
- 《Java程序员面试笔试宝典》之为什么Java中有些接口没有任何方法
- 《Java程序员面试笔试宝典》之为什么Java中有些接口没有任何方法
- 判断IE版本的HTML语句[if lte IE 9]……[endif]
- IE下判断IE版本的语句...[if lte IE 6]……[endif]
- 为什么控件的有些属性在代码中可用,但是在设计界面的属性窗口中就没有
- Java语言基础(四) : 选择结构之 if 语句
- IE下判断IE版本的语句...[if lte IE 6]……[endif]
- Python语言基础--1(if‘、while条件语句)
- GO语言基础-if语句特性
- <!--[if IE 6]><![endif]-->等语句含义
- 判断IE版本的HTML语句详解,如:[if lte IE 9]……[endif]