Да, вы не правы - нулевое значение будет усечено. В конце концов, если вы напишите:
char c = 0;
Вы не ожидаете, что компилятор будет писать за пределами переменной c, я надеюсь Если вы напишите что-то вроде этого:
char c = 12345;
тогда компилятор должен предупредить вас об усечении. GCC производит:
c.c:2: warning: overflow in implicit constant conversion
но ничего не будет записано за пределы переменной.