在我的笔记本电脑上,运行以下代码:
#include <iostream>
using namespace std;
int main()
{
char a;
cout << sizeof(~a) << endl;
}
Run Code Online (Sandbox Code Playgroud)
打印4.
我期望结果~a是char,但显然,它是一个int.
这是为什么?
~是一个操作员arithemtic(按位NOT),并a正被从提升signed char到int(并且在许多实现方式中sizeof(int) == 4).请参阅下面的解释:
http://en.cppreference.com/w/cpp/language/implicit_conversion#integral_promotion
小整数类型(例如char)的Prvalues可以转换为更大整数类型(例如int)的prvalues.特别是,算术运算符不接受小于int的类型作为参数,并且在左值到右值转换后自动应用整数促销(如果适用).此转换始终保留该值.
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |