as a user pointed out in a Gentoo bug, the statement: printf("%hi", 0xffff0010); yields -65520 instead of the expected truncated value 16 oddly enough, printf("%hu", 0xffff0010); works as expected tested Gentoo/glibc-2.4/amd64
Created attachment 950 [details] glibc-test-integer-length-conversion.patch updates the stdio printf tests to test for %hhi and %hi
I checked in a patch.