首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在C/C++中空表达式是合法的?

为什么在C/C++中空表达式是合法的?
EN

Stack Overflow用户
提问于 2009-05-05 11:43:07
回答 11查看 11.5K关注 0票数 17
代码语言:javascript
复制
int main()
{
  int var = 0;; // Typo which compiles just fine
}
EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-05-05 12:04:43

这就是C和C++表达NOP的方式。

票数 13
EN

Stack Overflow用户

发布于 2009-05-05 12:01:46

如果定义了NDEBUGassert(foo == bar);如何才能编译为空呢?

票数 34
EN

Stack Overflow用户

发布于 2009-05-05 11:46:20

我不是语言设计师,但我给出的答案是“有何不可?”从语言设计的角度来看,人们希望规则(即语法)尽可能简单。

更不用说“空表达式”也有用处了。

for (i = 0;i< INSANE_NUMBER;i++);

将死掉-等待(不是一个很好的使用,但仍然是一个使用)。

编辑:正如在对这个答案的评论中指出的那样,任何称职的编译器可能都不会忙于等待这个循环,并将其优化。然而,如果在for头本身中有更有用的东西(而不是i++),我见过(奇怪的)数据结构遍历,那么我想你仍然可以构造一个包含空体的循环(通过使用/滥用"for“结构)。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/824512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档