void main()
{
int num, a=15;
num = ----a--;
cout<<num;
cout<<a;
}
我试过了......我应该得到 15 14 在纸面上,因为4减去相互取消,剩下的是 -
但是在PC上,我得到了编译错误,因为 - 在a--让编译器认为在这个&#39; ----&#39;之前有一些前/后递减运算符。并要求操作数。解决方案是什么?
答案 0 :(得分:3)
正确的程序可以查看以下方式
#include <iostream>
int main()
{
int num, a = 15;
num = ( ----a )--;
std::cout << num << std::endl;
std::cout << a << std::endl;
return 0;
}
它的输出是
13
12
后递减运算符的优先级高于预递减运算符,其结果为rvalue
,可能不会更改。
此表达式
----a--
相当于
----( a-- )
并且不会编译。
所以你需要使用括号来编译程序。
考虑用C编写的相应程序,例如
#include <stdio.h>
int main( void )
{
int num, a = 15;
num = ( ----a )--;
printf( "%d\n", num );
printf( "%d\n", a );
return 0;
}
将无法编译,因为C中的预递减运算符也返回rvalue,您可能不会将运算符应用于rvalue。
只有C ++程序有效。