我遇到了一个问题,促使我进行了一些研究。我发现了一段这样的代码:
<pre><code>#include <stdio.h>
有一个从 CARM 借用的示例(C A 参考手册,Samuel P. Harbison III,Guy L. Steele Jr.,2002,Prentice Hall),第 218-219
我正在为前缀符号字符串制作一个计算器,它涵盖了我添加到其中的所有常规测试。但是我遇到了一个
<pre><code>#include <stdio.h>
int main()
{
int a = 1;
int b = 1;
int c = a || --b;
int d = a-- && --b;
pri
<strong>代码:</strong>
<pre><code>#include <stdio.h>
int main()
{
int i = 3;
printf("%d %d %d %d %d\n",i =
以下表达式:-
<pre><code>int main()
{
int x=2, y=9;
cout << ( 1 ? ++x, ++y : --x, --y);
}
</code></pre>
给出
这样定义,我们既可以既不是x也不是x–.但另一方面,(x)和(x)都是有用的表达式:(x)将x增加2并返回值“中间”,而(x) – 基本上等于x 1,完全避免必须调用运算符,这有时可能非常有用. 那么为什么优先级没有定义为将x自动扩展为(x)而不是(x)?对于后者我有什么隐含的意义,我不明白,还是只是为了保持一个简单的列表,所有前缀运算符组成一个单一的级别? 编辑好的,我没有明确说出来,但是我当然