为什么 `(a-- > 0)` 和 `((a--) > 0)` 相同?

发布于 2024-10-15 19:43:03 字数 341 浏览 4 评论 0原文

该程序是作为

main()
{
int a=1;
if( a-- > 0)
   printf("AAAA");
else
   printf("BBBB");
}

它的输出是AAAA 如果我使用

main()
{
int a=1;
if( (a--) > 0)
   printf("AAAA");
else
   printf("BBBB");
}

那么为什么输出再次是AAAA()-- 具有更多偏好。

The program is as

main()
{
int a=1;
if( a-- > 0)
   printf("AAAA");
else
   printf("BBBB");
}

Its output is AAAA
and if I use

main()
{
int a=1;
if( (a--) > 0)
   printf("AAAA");
else
   printf("BBBB");
}

then why again the output is AAAA.
() has more preference then -- .

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

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

发布评论

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

评论(5

喜爱纠缠 2024-10-22 19:43:03

后缀运算符 -- 具有比任何布尔比较更高的优先级操作员。

您到底期望什么? a-- 始终计算为 a 的值,该值在计算后递减。

The postfix operator -- has higher precedence than any boolean comparison operator.

What do you expect exactly? a-- always evaluates to the value of a which is decremented after evaluation.

つ可否回来 2024-10-22 19:43:03

后缀 -- 运算符返回变量的原始值,即使在递减它之后也是如此。

所以,是的,a 在比较之前递减,但表达式 a-- 的结果不是 < code>a,但值为 1

The postfix -- operator returns the original value of the variable, even after decrementing it.

So yes, a is decremented before the comparison, but the result of the expression a-- is not a, but the value 1.

看海 2024-10-22 19:43:03

-- 在表达式中使用变量后,其值会递减。

-- decrements the value of a variable after it is used in the expression.

月亮坠入山谷 2024-10-22 19:43:03

此处使用括号不会对代码产生任何影响,因为带括号和不带括号时求值顺序相同。您是正确的,括号的优先级高于 --。但是,在这种情况下,括号不会更改求值顺序,因为您没有按照与自然求值顺序不同的顺序对操作数进行分组。

The use of parentheses here doesn't have any effect on the code because the order of evaluation is the same with and without the parentheses. You are correct that parentheses have higher precedence than --. However, in this case the parentheses won't change the order of evaluation because you didn't group the operands in a different order than they'd evaluate naturally.

木森分化 2024-10-22 19:43:03

以下是 C++ 中所有运算符优先级的链接。

Here is a link with all the operator's precedence in C++.

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