3 C 中两个变量之间的加号(如 a+++b)

发布于 2024-12-02 11:17:00 字数 342 浏览 0 评论 0原文

#include <stdio.h>

int main()
{
    int a=8,b=9,c;
    c=a+++b;
    printf("%d%d%d\n",a,b,c);
    return 0;
}

上面的程序输出 a=9 b=9c=17。在a+++b中,为什么编译器采用a++然后添加b。为什么不采用 a +++b?这个a+++b有具体的名字吗?请帮助我理解。

#include <stdio.h>

int main()
{
    int a=8,b=9,c;
    c=a+++b;
    printf("%d%d%d\n",a,b,c);
    return 0;
}

The program above outputs a=9 b=9 and c=17. In a+++b why is the compiler takes a++ and then adds with b. Why is it not taking a + and
++b? Is there a specific name for this a+++b. Please help me to understand.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千纸鹤 2024-12-09 11:17:00

我喜欢 专家 C 编程 的解释:

ANSI 标准指定了一个约定,称为
最大咀嚼策略。最大的蒙克说如果还有更多
与下一个标记的一种可能性相比,编译器更喜欢
咬掉涉及最长字符序列的那个。所以
示例将被解析

<前><代码>c = a++ + b;

I like the explanation from Expert C Programming:

The ANSI standard specifies a convention that has come to be known as
the maximal munch strategy. Maximal munch says that if there's more
than one possibility for the next token, the compiler will prefer to
bite off the one involving the longest sequence of characters. So the
example will be parsed

c = a++ + b;
放手` 2024-12-09 11:17:00

阅读最大蒙克原理

<块引用>

“最大咀嚼”或“最长匹配”的原则是,在创建某些构造时,应消耗尽可能多的可用输入。


每个编译器都有一个标记生成器,它是将源文件解析为不同标记(关键字、运算符、标识符等)的组件。分词器的规则之一称为“最大咀嚼”,它表示分词器应继续从源文件中读取字符,直到再添加一个字符导致当前标记不再有意义。

Read Maximum Munch Principle

"maximal munch" or "longest match" is the principle that when creating some construct, as much of the available input as possible should be consumed.


Every compiler has a tokenizer, which is a component that parses a source file into distinct tokens (keywords, operators, identifiers etc.). One of the tokenizer's rules is called "maximal munch", which says that the tokenizer should keep reading characters from the source file until adding one more character causes the current token to stop making sense

古镇旧梦 2024-12-09 11:17:00

C 中的运算顺序规定一元运算的优先级高于二元运算。

如果您希望 b 首先递增,则可以使用 + (++b)。

Order of operations in C dictate that unary operations have higher precedence than binary operations.

You could use a + (++b) if you wanted b to be incremented first.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文