该订单隐式转换字母C++
char chValue = max('a', '6'); // returns 'a'
int max(int nX, int nY)
{
return (nX > nY) ? nX : nY;
}
铸信'a'
其对应的ASCII码号码,然后将其比作整数?
该订单隐式转换字母C++
char chValue = max('a', '6'); // returns 'a'
int max(int nX, int nY)
{
return (nX > nY) ? nX : nY;
}
铸信'a'
其对应的ASCII码号码,然后将其比作整数?
是的,因为max
是一个函数,需要两个int
S作为参数,炭a
将获得implicitly converted为int
,然后获得通过作为函数的参数。
是的,它需要2个整数,并返回最大,并感谢 –
@MekacherAnis很高兴我能够帮助。如果它解决了问题/回答了问题,请考虑接受答案。 – blazs
没有“隐式演员”这样的事情。演员阵容是*显式*转换。 –
不完全。
字符常量'a'
和'6'
的类型是char
,这是一个整数类型。他们已经表示整数值,并假设一个基于ASCII的实现,它们表示这些字符的ASCII值。这是在编译时确定的。
您的max
函数需要两个int
参数并返回int
结果。 'a'
和'6'
是隐含地转换为从char
到int
。 (此转换会产生一个具有不同表示形式但值相同的值。)演员表是一个明确的转换,用C风格的演员操作符(如(int)'a'
)或其中一个特定于C++的演员操作符(以在static_cast<int>('a')
由于int
和char
都是整数类型,在此不再投。
(在C中,字符常量是int
类型,并且不会有任何转换的。)
的int
由max()
返回的结果然后被隐含地从int
转换为char
,结果存储在chValue
。
C++实际上并不需要用ASCII编码字符。例如,IBM大型机使用称为EBCDIC的不同字符集。 (在EBCDIC中,比较将以另一种方式进行,而chValue
将是'6'
而不是'a'
。)
发布相关代码 - 什么是'max'声明? – MSalters
@ MSalters好吧 –