Par exemple, si le nombre entier était 97, le caractère serait "a" ou 98 en "b".
En C, int
, char
, long
, etc. sont tous les entiers .
Ils ont généralement des tailles de mémoire différentes et donc des plages différentes comme dans INT_MIN
à INT_MAX
. char
et les tableaux de char
sont souvent utilisés pour stocker des caractères et des chaînes. Les entiers sont stockés dans de nombreux types: int
étant le plus populaire pour un équilibre entre vitesse, taille et portée.
L'ASCII est de loin l'encodage de caractères le plus populaire, mais d'autres existent. Le code ASCII pour un 'A' est 65, 'a' est 97, '\ n' est 10, etc. Les données ASCII sont généralement stockées dans une variable char
. Si l'environnement C utilise le codage ASCII, tous les suivants stockent la même valeur dans la variable entière.
int i1 = 'a';
int i2 = 97;
char c1 = 'a';
char c2 = 97;
Pour convertir une int
en une char
, affectez simplement:
int i3 = 'b';
int i4 = i3;
char c3;
char c4;
c3 = i3;
// To avoid a potential compiler warning, use a cast `char`.
c4 = (char) i4;
Cet avertissement survient parce que int
a généralement une plage plus grande que char
et qu'une perte d'informations peut donc survenir. En utilisant la distribution (char)
, la perte potentielle d'informations est explicitement dirigée.
Pour imprimer la valeur d'un entier:
printf("<%c>\n", c3); // prints <b>
// Printing a `char` as an integer is less common but do-able
printf("<%d>\n", c3); // prints <98>
// Printing an `int` as a character is less common but do-able.
// The value is converted to an `unsigned char` and then printed.
printf("<%c>\n", i3); // prints <b>
printf("<%d>\n", i3); // prints <98>
Il existe d'autres problèmes d'impression, tels que l'utilisation de %hhu
ou le transtypage lors de l'impression d'un unsigned char
, mais laissez cela pour plus tard. Il y a beaucoup à printf()
.
char c1 = (char)97; //c1 = 'a'
int i = 98;
char c2 = (char)i; //c2 = 'b'
Lancer le nombre entier sur un caractère fera ce que vous voulez.
char theChar=' ';
int theInt = 97;
theChar=(char) theInt;
cout<<theChar<<endl;
Il n'y a pas de différence entre 'a' et 97 en plus de la manière dont vous les interperet.
#include<stdio.h>
void main ()
{
int num;
printf ("=====This Program Converts ASCII to Alphabet!=====\n");
printf ("Enter ASCII: ");
scanf ("%d", &num);
printf("%d is ASCII value of '%c'", num, (char)num );
}
#include<stdio.h>
void main ()
{
char alphabet;
printf ("=====This Program Converts Alphabet to ASCII code!=====\n");
printf ("Enter Alphabet: ");
scanf ("%c", &alphabet);
printf("ASCII value of '%c' is %d", alphabet, (char)alphabet );
}
void main ()
{
int temp,integer,count=0,i,cnd=0;
char ascii[10]={0};
printf("enter a number");
scanf("%d",&integer);
if(integer>>31)
{
/*CONVERTING 2's complement value to normal value*/
integer=~integer+1;
for(temp=integer;temp!=0;temp/=10,count++);
ascii[0]=0x2D;
count++;
cnd=1;
}
else
for(temp=integer;temp!=0;temp/=10,count++);
for(i=count-1,temp=integer;i>=cnd;i--)
{
ascii[i]=(temp%10)+0x30;
temp/=10;
}
printf("\n count =%d ascii=%s ",count,ascii);
}