Jak*_*ruk 2 c++ casting operators
我有以下代码:
#include <iostream>
using namespace std;
int main()
{
cout << ('a' + 1) << endl;
cout << static_cast<char>('a' + 1) << endl;
cout << static_cast<int>('a' + 1) << endl;
}
Run Code Online (Sandbox Code Playgroud)
输出为:
98
b
98
我假设,这'a' + 1是int operator+(int, int)按以下顺序计算功能:
operator+ 返回整数结果(98)这一切都是我的预测.如何检查调用哪个函数是100%确定的?
更清晰的类型修订:
cout << (typeid('a') == typeid(char) ? "char" : "not char") << endl;
cout << (typeid(1) == typeid(int) ? "int" : "not int") << endl;
cout << (typeid('a' + 1) == typeid(int) ? "int" : "not int") << endl;
Run Code Online (Sandbox Code Playgroud)
输出为:
char
int
int
内置运算符构成非函数调用的基本表达式.它们是核心语言的一部分.对于算术类型,应用了一组转换("通常的算术转换",5/9),以便两个操作数都是相同类型的值.在你的榜样,一个操作数char,而另一个int,所以char被提升到一个int或unsigned int通过积分促销规则,然后适当的转换应用到另一个操作数.(通常情况下,双方最终会成为一个int,尽管你可以设想平台unsigned int.)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |