Il faut faire attention avec char, parce qu'il peut être signé ou non-signé. Et que, c'est là que c'est drôle, il n'est équivalent ni à signed char ni à unsigned char (dans le sens où ce sont trois types différents). Et enfin, ça fout toujours le bazar d'avoir des pointeurs sur char parce que les règles d'aliasing disent que char * peut représenter n'importe quoi, un peu comme void *, et donc ça empêche plein d'optimisations.
À noter qu'il existe depuis C++20 le type char8_t (ainsi que char16_t et char32_t depuis C++11) pour représenter un code unit UTF8 (respectivement UTF16 et UTF32). Je crois que ça va arriver bientôt en C (les deux autres y sont déjà depuis C11).
# Le saviez-vous ?
Posté par rewind (Mastodon) . En réponse au journal Vous avez dit "caractère" ?. Évalué à 5. Dernière modification le 05 septembre 2022 à 14:29.
Il faut faire attention avec
char, parce qu'il peut être signé ou non-signé. Et que, c'est là que c'est drôle, il n'est équivalent ni àsigned charni àunsigned char(dans le sens où ce sont trois types différents). Et enfin, ça fout toujours le bazar d'avoir des pointeurs surcharparce que les règles d'aliasing disent quechar *peut représenter n'importe quoi, un peu commevoid *, et donc ça empêche plein d'optimisations.À noter qu'il existe depuis C++20 le type
char8_t(ainsi quechar16_tetchar32_tdepuis C++11) pour représenter un code unit UTF8 (respectivement UTF16 et UTF32). Je crois que ça va arriver bientôt en C (les deux autres y sont déjà depuis C11).