gpt4 book ai didi

c - "extra"分号是什么意思?

转载 作者:行者123 更新时间:2023-11-30 21:48:15 26 4
gpt4 key购买 nike

我正在寻找代码中“双分号”的解释:

for(;;){}

Original question.

我没有足够的声誉,甚至无法发表评论,因此我需要创建一个新问题。

我的问题是,

“额外”分号是什么意思。这是“双分号”还是“额外分号”用于“其他内容”?

这个问题来自一个没有编程知识的人,刚刚打开我的第一个 arduino 套件,当 LED 闪烁时感觉像个 child 。但事实上,这些问题就像普遍发生的事情一样,正在散发出提问者的实际知识。

使用while(1)超越“个人喜好”或for(;;)使用 for(;;) 有帮助吗?哪里没有足够的空间来容纳代码本身?

我已经更新了问题。感谢您的快速解释。你让我大开眼界,想到了不要在 for 循环 = ) 中使用任何东西。从基本的高中知识来看,我知道 for 循环,所以谢谢你。

所以for(;;) “默认情况下”返回 TRUE?

我的最后一行关于代码的大小?

或者编译后使用for或while实际上并不影响编译后的代码大小?

最佳答案

经常编写for循环

int i;
for (i = 0; i < 6; i++) {
...
}

在第一个分号之前,有一些代码在循环开始之前运行一次。通过忽略这一点,在循环开始之前就不会发生任何事情。

分号之间是每次循环后检查的条件,如果计算结果为 false,则 for 循环结束。通过省略此操作,您无需进行检查,并且它始终会继续。

第二个分号之后是在每个周期之后、在评估该条件之前运行的代码。忽略这个只会在那时运行额外的代码。

分号总是在那里,它们相邻的面没有什么特别的。您可以将其替换为

for ( ; ; )

具有相同的效果。

虽然 for (;;) 本身不返回 true(它不返回任何内容),但 for 括号中的第二个字段如果为空,则始终会导致循环继续。这样做没有任何原因,只是有人认为这会很方便。请参阅https://stackoverflow.com/a/13147054/5567382 。它指出空条件总是被非零常量替换,这是循环继续的情况。

至于大小和效率,它可能会根据编译器的不同而有所不同,但我看不出有任何理由认为一个比另一个更有效,尽管这实际上取决于编译器。编译器可能允许程序在 while 循环的条件下将常量计算为非零,但会识别空的 for 循环条件并跳过比较,尽管我希望编译器能够更好地优化 while 循环。 (说起来很长,我不知道,但这取决于很多。)

关于c - "extra"分号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50514875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com