L'opération "a << b" est indéfini en C si b est plus grand que le nombre de bits de a.
En général, avec gcc, cette expression vaut simplement :
a << (b % (sizeof(a) * 8))
En général, un char fait 8 bits. Donc 'test1 << 8' vaut simplement test1, avec le type 'char'. Ton expression vaut donc la somme de deux char sur 8 bits.
Tu peux écrire si tu veux (((short)test1) << 8)) + test2
# Comportement non défini en C
Posté par Yvan Joffre . En réponse au message deux char pour faire un short. Évalué à 2.
En général, avec gcc, cette expression vaut simplement :
a << (b % (sizeof(a) * 8))
En général, un char fait 8 bits. Donc 'test1 << 8' vaut simplement test1, avec le type 'char'. Ton expression vaut donc la somme de deux char sur 8 bits.
Tu peux écrire si tu veux (((short)test1) << 8)) + test2