prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 3.6

是否可以安全地认为右侧的&&||运算符?


可以。像

	if(d != 0 && n / d > 0)
		{ /* average is greater than 0 */ }
	if(p == NULL || *p == '\0')
		{ /* no string */ }
这样的习语在 C 语言中非常常见,并且依赖于所谓的“短路”行为。在第一个例子中,如果没有短路行为,当d等于 0 时,右侧将进行除以 0 的运算——并可能导致程序崩溃。在第二个例子中,当p为 NULL 指针时,右侧将尝试引用不存在的内存——并可能导致程序崩溃。

参考文献:ISO Sec. 6.3.13, Sec. 6.3.14
H&S Sec. 7.7 pp. 217-8


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管