J'ai eu le code le plus simple pour afficher Tailleof () d'un type de données, dites un int.
error: invalid conversion from âintâ to âconst char*â
4 Réponses :
Essayez Les citations doubles sont manquantes. P>
Explore également si vous pouvez utiliser CSTDIO au lieu de stdio.h si vous êtes sur C ++. P> printf ("% zu", tailleOf (int)); code> p>
Merci, j'avais été codé dans PHP depuis trop longtemps .. Je continue d'oublier que les citations simples ne soient pas pour les cordes. Grrr.
@John: Regardez la réponse de @Richard Cook. Cela va expliquer pourquoi vous avez eu l'erreur. C'est une excellente occasion d'apprendre!
Fixez le type ou lancer le résultat de Tailleof code> à
int code>. Sinon, votre code va briser les cibles 64 bits.
C'est printf code> pas
impression code>. Et vous devriez utiliser
"% zu" code> pour imprimer un
taille_t code>
"% zu" code> Les spécifications de conversion sont GNU Addition et n'est pas portable. Cette spécification de conversion fait partie de C99, mais non incluse dans le projet C ++ 0X. Avec
-pedantic code> Option Compiler se plaindre sur ce spécificateur.
guillemets simples Ainsi tentent de passer un Remarque: dans les littéraux de caractères C ++ sont de type ' code> est utilisé pour délimiter les littéraux de caractères (type
int code> in c) tandis que les devis doubles
" code> sont utilisés pour délimiter les littéraux de chaînes ( Tapez "Array de
Char code>" in c).
printf code> est déclaré comme suit: p>
int code> où la fonction attend un
const char * code> ou quelque chose qui peut être converti en
const char * code>. p>.
Char code>, les littéraux de chaîne sont "Array de
const Char code>". P> P> P>
Appréciez l'explication de la raison aussi: + 1
Il devrait être:
printf("%i\n", sizeof(int));
Non, il devrait être printf ("% zu \ n", Tailleof (int)); code> ou `printf ("% u \ n ", (non signé) Tailleof (int));" Vous «Répécez le mauvais type d'argument et le code se brisera sur des cibles 64 bits.
Mais cela ne vous donnera qu'un avertissement là-bas. Il sera automatiquement lancé.
AVERTISSEMENT A.K.A ERREUR (99,99% des temps), automatiquement (est la résolution de 0,01%)
Non, il ne peut pas i> le jeter automatiquement car il s'agit d'un argument dans une liste d'arguments variables. Les listes d'arguments variables sont nécessairement non voté; Un int code> est toujours transmis sous la forme d'un
int code>, même si la fonction
printf () code> s'attend à quelque chose d'autre.
Plus significativement, ze_t code>! =
int code> en général, et il n'y a aucune garantie que
tailleof (Taille_t) == Tailleof (int) code>, surtout dans le monde 64 bits (non-fenêtres). Sur les machines Little-Endian (Intel), vous pouvez vous échapper, plus par accident que la conception; Sur les machines de Big-Endian (SPARC, PPC), vous ne vous en tirerez pas - vous imprimerez généralement des zéros lorsqu'il y a une valeur et des ordures lors de valeurs ultérieures.
printf("%zu", sizeof(int)); printf, not print %zu, not %i (it's an unsigned value, not an integer) double quotes, not single quotes
Ce n'est pas c ++ alors. En C ++, un littéral de caractères est de type
char code>, pas
int code>.
Voter pour fermer comme une simple faute de frappe.
printf code> pour
taille_t code> à: Stackoverflow.com/Questtions/174612/...