Bonjour !
Pour les énumérés, sauf erreur de ma part ou ajout dans la nouvelle mouture, on ne peut pas.
Pour la deuxième notation, dans une structure, c'est ce qu'on appelle des champs de bits. Dans l'exemple ci-dessus, cela donne :
val1 : entier signé sur 2 bits (entre -2 et 1)
val2 : booléen stocké sur un bit (ce qui suffit largement),
val1 : entier signé sur 3 bits (entre -4 et 3).
Ce n'est pas forcément conseillé de les utiliser par pas mal de règles de programmation, la façon dont les données sont stockées en mémoire dépend du bon vouloir du compilateur, mais cela permet de gagner de la place en mémoire.
Bonne continuation !
---------------
On n'est jamais très fort pour ce calcul !