Additionner des char est ce possible ?

J'aimerais pouvoir additionner des caractères ascii, ou leurs valeurs numériques et que la somme soit un char.

lorsque j'additionne :

CHAR 4 + 6 + 1 = ?
DEC 52 + 54 + 49 = 155

Est ce possible de faire une addition de la sorte et d'avoir un résultat en char ?

Le type char est un octet signé (contrairement au type byte qui est non signé) d'ailleurs si tu regardes la page de référence sur le type char http://arduino.cc/en/Reference/Char il est dit que l'on peut faire des opérations avec les char

Juste un petit bout de code pour montrer que cela fonctionne.

char toto1;
char toto2;

void setup(void)
{
  Serial.begin(19200);
}


void loop(void)
{
  char tata;
  
  toto1=34;
  toto2=56;
  tata=toto1+toto2;
  Serial.println(toto1,DEC);
  Serial.println(toto2,DEC);
  Serial.println(tata,DEC);
  delay(3000);
}

fdufnews a été plus rapide. Par contre je crois que ce que Jean-François veut faire, c'est ajouter les caractères sans les convertir en nombres, comme ça :

void setup()
{
  Serial.begin(9600);

  char total;  
  total = '4' + '6'+ '1';
  
  Serial.print(total); 
}

void loop()
{
  
  
}

char toto= '4' + '6' + '1';

L'opération additionne le code ASCII des 3 caractères.
Donc 52 + 54 + 49, ce qui donne -101 car le type char et signé.
si tu utilises des unsigned char (ou des byte)

unsigned char toto= '4' + '6' + '1';

Tu retrouves 155.

Merci à vous pour les réponses.

Je m'aperçois que ce que j'aimerais obtenir n'est pas possible en char.

Il vaut mieux que je passe en hexadécimal.

Mais qu'est-ce que tu veux faire?

Je suis en train de faire un contrôle de redondance cyclique entre Arduino et Processing et le fait d'additionner des char m'aurait permis d'avoir une somme de contrôle moins "volumineuse",mais finalement le résultat en hexa sera bien mieux.

Tu veux faire le CRC des codes ASCII ou de la valeur qu'ils représentent?

Ce que je voulais contrôler c'est la somme d'un trame envoyée telle que :

$123,C,45.56343,6.76436,B,564,59340,2533#

je me disais que si je traitais cette chaine comme un tableau de char, je n'avais qu'a additionner chaque position du tableau pour avoir ma somme de contrôle, la différence dépassant les 127 serait convertie en un char supplémentaire, additionné au précédent.... (pas vraiment simple ::))
En faisant comme cela je ferai passablement plus de calcul que si j'utilise la valeur hexa de chaque char.

tu fais une boucle qui parcourt ton tableau et tu fais la somme dans un unsigned long.

quelque chose dans ce genre

unsigned long crc=0;

for (int index=0; index<strlen(chaine)-1; index++){
   crc+=(unsigned long)chaine[index];
}

C'est plus ou moins ce que j'ai fait, mais en hexadécimal, je n'ai pas de reste.

pour la longueur d'une string, c'est comme ça pour Arduino :

for(int a=0;a<thisString.length();a++){