当前位置:  开发笔记 > 编程语言 > 正文

使用while块什么都不做坏事?

如何解决《使用while块什么都不做坏事?》经验,为你挑选了2个好方法。

我目前正在学习'C程序设计语言'的练习.这是我的解决方案之一:

int c;

while ((c=getchar()) != EOF) {

if (c == ' ') {

    while ((c = getchar()) == ' ')

    {}  // do nothing?

    putchar(' ');

}

putchar(c);

}

我在这里发现了一些与我的完全不同的解决方案,并使用额外的变量来跟踪发生了什么,而我只是使用while循环来跳过所有空间.我的解决方案感觉有点混乱,因为看起来有点hackish有一个在花括号之间没有任何东西的while循环.我想知道是否有任何好的理由不这样做?谢谢你的建议:-)



1> Kyle Cronin..:

完全没有 - 我相信你会在K&R中找到像这样的无所事事的循环,所以它就像它的官方一样.

这是个人偏好的问题,但我更喜欢这样的无操作循环:

while(something());

其他人更喜欢分号分开,以强化它是一个循环:

while(something())
  ;

还有一些人更喜欢使用内部没有任何内容的括号,正如您所做的那样:

while(something())
{
}

这一切都是有效的 - 你只需选择你喜欢的风格并坚持下去.


我倾向于把"继续"放到一个空循环中:"while(foo)继续;".我认为这使得循环的无操作特性更清晰,但这是一个非常小的风格问题.

2> jeffD..:

你的问题"使用一段时间不做任何坏事吗?" 也可以在浪费CPU周期方面回答.在这种情况下,答案是"否",因为,当进程等待用户输入字符时,进程将休眠.

只有在输入字符后才会唤醒该过程.然后测试将发生,如果测试通过,即c =='',则该过程将再次进入休眠状态,直到输入下一个字符.重复此操作直到输入非空格字符.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有