【发布时间】:2016-11-01 05:50:42
【问题描述】:
void main()
{
int num, a=15;
num = ----a--;
cout<<num;
cout<<a;
}
我试过了......我应该得到 15 14 在纸面上,因为 4 减去相互抵消,剩下的是 --
但在 PC 上我得到编译错误,因为 a-- 之前的 ---- 使编译器认为这个 '----' 中有前/后减量运算符并要求一个操作数。解决办法是什么?
【问题讨论】:
-
解决办法是不要使用这样一段混淆的代码,清楚地表达你想要做什么。编程已经够难了,为什么要让它变得比它需要的更难?
-
为什么
----会互相抵消?--递减,所以我不明白为什么其中两个会递减和递增。除此之外,当遇到编译器错误时,您应该完整地发布确切的错误,而不是试图描述它。 -
为什么所有的反对票?关于操作符绑定、左值等有一些有用的讨论。
-
输出是编译器错误。错误的内容取决于编译器。
-
@NiranjanDixit 由于最大蒙克规则,它将其解释为连续两个预减量并给出错误,因为您正试图将其应用于 r 值。您帖子中的代码是非法的,预计会出错。
标签: c++ operators increment decrement