这可能是一个愚蠢的问题,但有人可以请为C++ 11和C11提供标准参考:
是char默认升为int?
这里有一点背景:C和C++都有默认参数提升的概念(C++ 11:5.2.2/7; C11:6.5.2.2/6).这需要在以下调用中提升参数:
void f(int, ...);
float a = 1; short int b = 2; char c = 'x';
f(0, a, b, c);
Run Code Online (Sandbox Code Playgroud)
对于函数调用,a将转换为double并b转换为int.但是会发生什么c?我一直都认为这char也得到提升int,但我无法在标准中找到相关的陈述.