2009-08-02 7 views

Répondre

4

De MSDN:

% c

type: int or wint_t 

Lorsqu'il est utilisé avec des fonctions printf, spécifie un caractère mono-octet; lorsqu'il est utilisé avec les fonctions wprintf, spécifie un caractère large.

% C

type: int or wint_t 

Lorsqu'il est utilisé avec les fonctions printf , spécifie un caractère large; lorsqu'il est utilisé avec les fonctions wprintf, spécifie un caractère à un octet.

plus sur spécificateurs here

4

De MSDN

% c

Lorsqu'il est utilisé avec des fonctions printf, spécifie un caractère mono-octet; lorsqu'il est utilisé avec les fonctions wprintf, spécifie un caractère large.

% C

Lorsqu'il est utilisé avec les fonctions printf, spécifie un caractère large; lorsqu'il est utilisé avec les fonctions wprintf, spécifie un caractère à un octet.

4

Notez que% C est pas standard. Les conversions standard pour les caractères sont:

  • % c est utilisé pour int. printf l'afficher comme s'il s'agissait d'un unsigned char. wprintf affiche le résultat de la conversion en wchar_t par btowc.
  • % lc est utilisé pour un wint_t. printf génère le résultat de la conversion en chaîne multi-octets par wcrtomb. wprintf l'afficher comme s'il s'agissait d'un wchar_t.
+0

Ce qui implique également que le comportement de Microsoft pour% c dans les fonctinos * w * printf est également non conforme. De MSDN: "Les types C, n, p et S, et le comportement de c et s avec les fonctions printf, sont des extensions Microsoft et ne sont pas compatibles ANSI." –

+0

La norme définit un comportement pour n et p qui semble correspondre à celui décrit dans le lien MSDN ci-dessus (qui ne mentionne pas n et p comme extension BTW). Et je suppose que l'utilisation de printf au lieu de wprintf est une faute de frappe. En regardant cette page, je vois une autre extension Microsoft: l'utilisation de h comme modificateur avec c et s qui leur redonne leur comportement standard. – AProgrammer

Questions connexes