C++中加上單引號的字符


  學習c++的時候遇到一道題,如下:

template <typename T> T calc(T,int);
template <typename T> T fcn(T,T);
double d; float f; char c;
calc(c, 'c');     //正確
calc(d, f);      //錯誤
fcn(c , 'c');   //正確
fcn(d, f);     //錯誤

  一開始不能理解為什么fcn(d, 'c') 是正確的,‘c'應該是指字符c的ascill碼,應該是一個int型,而前面的c是一個字符型,但是它們使用的是同一個模板參數,所以它們應該為同一個類型才對。於是我用編譯器測試輸出,如下:

char c = 'a';
int b = 'a';
cout << c << endl << 'a' << endl << b;

  結果為:a a 97。從這個結果,可以得出,對於’a'這個字符字面值常量,它既可以賦值給char型變量,也可以賦值給int型變量,所以反推,'a'可以根據需要視作char型或者int型。在上面的題中,calc(c, 'c')中的'c'就是一個int型,而fcn(c, 'c')中的'c'是一個char型。

  對於為什么會有這種情況,我沒有很深的了解,希望有大佬指教,謝謝~。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM