3 C 中两个变量之间的加号(如 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;
}
上面的程序输出 a=9 b=9
和 c=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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我喜欢 专家 C 编程 的解释:
I like the explanation from Expert C Programming:
阅读最大蒙克原理
每个编译器都有一个标记生成器,它是将源文件解析为不同标记(关键字、运算符、标识符等)的组件。分词器的规则之一称为“最大咀嚼”,它表示分词器应继续从源文件中读取字符,直到再添加一个字符导致当前标记不再有意义。
Read Maximum Munch Principle
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
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.