gpt4 book ai didi

c - 为什么 C 使用语句作为 for 循环的条件?

转载 作者:太空宇宙 更新时间:2023-11-04 01:18:57 25 4
gpt4 key购买 nike

正如标题所说。如果我没记错的话,语句不应该返回任何值,那么 C 如何从语句中检索值呢? (是的,我知道编译器可以做到这一点,但这需要一些技巧,而且并不漂亮。)

而且for循环的自增部分是一个表达式,这也很容易混淆,因为你永远不需要自增操作的返回值。

我所有的C语法知识都来自here .

事实上,我正在编写一个试图遵循 C 语法的 DSL,但在实现 for 循环时感觉很不对劲,尤其是我决定将赋值作为语句而不是表达式。

最佳答案

在 C 语言中,for 循环有两种语法形式,它们都不使用语句作为条件

for ( expression[opt] ; expression[opt] ; expression[opt] ) statement
for ( declaration expression[opt] ; expression[opt] ) statement

在您的链接中,显然有人试图使用 expression_statement 来替代 expression 后跟 ;。这在语法上可能有效,但它并不反射(reflect)这种语言结构的语义。从语义上讲,该语言在那里看不到任何“陈述”。语言看到并使用表达式。

And the increment part of for loop is a expression, which is very confusing too, because you would never need the increment operation's return value.

但是对于 [几乎] C 语言中的每个表达式语句都是如此。表达式语句中完整表达式的结果总是被丢弃。每次你说

printf("Hello World");

您丢弃了 printf 的结果。每次你这样做

a = b + c;

您丢弃整个表达式的结果。

关于c - 为什么 C 使用语句作为 for 循环的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49213009/

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