That's undefined behavior, the compiler can do whatever it pleases to. It can even print 666, and be done.
He does assume sizeof(int) > sizeof(char), which is true on all platforms he has tried. It would be undefined on an AVR or other microcontroller where sizeof(int) == sizeof(char) though.
Just noting that ints are 16 bits wide in AVR-GCC, unless you use the -mint8 option which violates C standards.