当我使用C++时,我调用了一个重载函数foo,如下所示:
foo('e' - (char) 5)
Run Code Online (Sandbox Code Playgroud)
它可以根据类型结果输出"this is a char"或"this is a int".我从我的程序中得到"这是一个int",如下所示:
#include <iostream>
void foo(char x)
{
std::cout << "output is a char" << std::endl;
}
void foo(int x)
{
std::cout << "output is an int" << std::endl;
}
int main()
{
foo('a' + (char) 5);
}
Run Code Online (Sandbox Code Playgroud)
我的导师说,在C中,上面的表达式('a' + (char) 5),作为char计算.我在C99标准中看到,字符被提升为整数以查找总和,但是当C完成时C是否会将它们重新转换为字符?我找不到任何看似可信的参考文献,说明促销完成后C实际上做了什么,并找到了总和.
总和是作为int保留还是作为char给出?我如何在C中证明这一点,或者是否有我不理解/发现的参考?