346 votes

Taille de caractère ('a') en C/C++

Quelle est la taille de caractère en C et C++ ? Autant que je sache, la taille du char est de 1 octet à la fois le C et le C++.

En C :

#include <stdio.h>
int main(){
  printf("Size of char : %d\n",sizeof(char));
  return 0;
 }

En C++ :

#include <iostream>
int main(){
  std::cout<<"Size of char : "<<sizeof(char)<<"\n";
  return 0;
 }

Pas de surprises, les deux d'entre eux donne de la sortie : Size of char : 1

Nous savons maintenant que les personnages sont représentés en tant que 'a','b','c','|', Donc... j'ai juste modifié les codes ci-dessus:

En C :

#include <stdio.h>
int main(){
  char a = 'a';
  printf("Size of char : %d\n",sizeof(a));
  printf("Size of char : %d\n",sizeof('a'));
  return 0;
 }

Sortie :

Size of char : 1
Size of char : 4

En C++ :

#include <iostream>
int main(){
  char a = 'a';
  std::cout<<"Size of char : "<<sizeof(a)<<"\n";
  std::cout<<"Size of char : "<<sizeof('a')<<"\n";
  return 0;
 }

Sortie :

Size of char : 1
Size of char : 1

Donc ma question est : pourquoi la sizeof ("a") renvoie des valeurs différentes en C et C++ ?

33voto

David R Tribble Points 4813

Comme Paul l'a dit, c'est parce qu' 'a' est int en C, mais un char en C++.

Je couvre précis de la différence entre C et C++ dans quelque chose que j'ai écrit il y a quelques années, à: http://david.tribble.com/text/cdiffs.htm

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X