关于 C/C++ R 值表达式的谜题?
下面我们将会看到一个谜题。假设有一个程序如下所示,我们需要说明输出是什么以及原因是什么?
示例
#include<iostream>
using namespace std;
int main() {
int x = 0xab;
~x;
cout << hex << x;
}那么输出是什么?~x 执行的取反操作。因此它是否以十六进制形式显示取反结果?
总的来说输出如下
输出
ab
因此,没有发生变化。为什么呢?原因是 ~x 将 x 转换为取反形式,但该值未分配给任何变量。表达式是 R 值表达式。在使用 L 值之前,它不会存储到某些变量中。如果我们放置 L 值,它将如下所示 −
示例
#include<iostream>
using namespace std;
int main() {
int x = 0xab;
x = ~x;
cout << hex << x;
}输出
ffffff54
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP