此代码的输出是什么?我在这里错过了什么吗?
What is the output of this code? Am i missing something here?
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 程序有效。
相关文章:
- 努力将整数转换为链表。不知道我在这里做错了什么
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- 我在这里正确传递参数了吗?
- gcc 是否在 2 条短裤的过度对齐结构的比较中错过了优化机会?
- 我的C++合并排序代码不起作用。我在这里错过了什么?
- C++:将向量传递给函数,然后在main中调用函数.错过了什么
- istringstream,num1 和 num2 在这里发生了什么?
- 在这个while循环中我错过了什么?
- R 值似乎为未命名的临时提供不完整的支持,还是我在这里遗漏了一些东西?
- 如果这不是 boost::lockfree::d etail::freelist 中的错误,我在这里错过了什么
- 此代码的输出是什么?我在这里错过了什么吗?
- 这个指针增量操作在这里实现了什么
- 我在这里滥用了模板吗?
- 尝试使用C++实现检测字符串中回文的递归版本.在这里遇到了一些麻烦
- AFAIK,下面的代码不应该编译,但它可以在 clang 和 GCC 中编译。我在这里错过了什么?
- 我在这里滥用了指针吗?虽然循环条件似乎无法正常工作
- C ++中的构建错误,未定义的符号,在这里尝试了其他答案,无法弄清楚
- {错误 C2338: (boost::has_trivial_destructor:<T>:value)} 对于 boost::lockfree::queue 是什么意思?我在这里错过了什
- 我的ArrayStack在这里发生了什么
- 为什么C/C++预处理器在这里添加了一个空格