Tenir compte de ce programme:Pourquoi la surcharge de fonction prend un int préféré à celui qui prend un caractère non signé?
#include <iostream>
using namespace std;
void f(unsigned char c) {
cout << c << endl;
}
void f(int c) {
cout << c << endl;
}
int main() {
f('a');
}
Cette imprime 97
, ce qui suggère que la surcharge f()
qui a été choisi est celui qui prend un int
. Je trouve ça bizarre; ne serait pas intuitivement un unsigned char
être un meilleur match pour un char
?
c'est parce que sur votre compilateur char == char signé – Sopel
Je ne peux pas trouver un doublon approprié, mais il y en a probablement un. ce que vous cherchez, c'est comment les séquences de conversion sont gérées. –
Ceci est similaire et devrait aider à expliquer les choses. https://stackoverflow.com/questions/37166131/why-does-the-compiler-match-char-to-int-but-not-short –