此代码的输出是什么?我在这里错过了什么吗?

What is the output of this code? Am i missing something here?

本文关键字:在这里 错过了 什么 输出 是什么 代码      更新时间:2023-10-16
void main()
{
    int num, a=15; 
    num = ----a--;
    cout<<num;
    cout<<a;
 }

我尝试了...我应该得到1514在纸上,coz 4减,彼此取消,剩下的是 -

但是,在PC上,我会在a-之前获得编译错误。解决方案是什么?

正确的程序可以看起来以下方式

#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( "%dn", num );
    printf( "%dn", a );
    return 0;
}

不会编译,因为C中的预启动运算符也返回rvalue,并且您不得将操作员应用于rvalue。

只有C 程序有效。

相关文章: