这行吗
char chValue = max('a', '6'); // returns 'a'
int max(int nX, int nY)
{
return (nX > nY) ? nX : nY;
}
将字母'a'
转换为ASCII等效数字,然后将其与整数进行比较?
答案 0 :(得分:4)
是的,因为max
是一个以int
为参数的函数,所以char a
会将implicitly converted变为int
然后获取作为函数的参数传递。
答案 1 :(得分:3)
不完全是。
字符常量'a'
和'6'
属于char
类型,这是一种整数类型。它们已经表示整数值,并假设基于ASCII的实现,它们表示这些字符的ASCII值。这是在编译时确定的。
您的max
函数需要两个int
个参数并返回int
个结果。 'a'
和'6'
从<{1}}隐式转换为到char
。 (此转换产生的值具有不同的表示但具有相同的值。)强制转换是显式转换,用C样式的强制转换运算符(如int
中所示)或使用一个特定于C ++的转换运算符(如(int)'a'
中所示。由于static_cast<int>('a')
和int
都是整数类型,因此这里不需要强制转换。
(在C中,字符常量的类型为char
,根本不会有任何转换。)
int
返回的int
结果会隐式转换为max()
到int
,结果存储在char
。
C ++实际上并不要求字符以ASCII编码。例如,IBM大型机使用名为EBCDIC的不同字符集。 (在EBCDIC中,比较将采用另一种方式,而chValue
将是chValue
而不是'6'
。)