in principle, yes. in principle it does not matter what integer type you use here, as long as you don't use char FLAG : 15, which is obviously nonsense, and of course the type is important for the underlying arithmetic used (unsigned). also note that the code generated out of this might be inefficient (it depends on the compiler used).

you can always use sizeof(my_struct) to check the memory usage of your struct.