• # Comportement non défini en C

    Posté par . En réponse au message deux char pour faire un short. Évalué à 2.

    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