該訂單隱式轉換字母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好吧 –