#include <stdio.h>
int main (int argc, char *argv[])
{
printf ("%hhd\n", 0x100);
printf ("%hhu\n", 0x100);
return 0;
}
[mathieu@localhost mathieu]$ ./a.out
0
0
以下结果一样
printf ("%hhd\n", 256);
printf ("%hhu\n", 256);
%hhu 是指定后面的参数为unsigned char(不含负数, h--half)类型然后打印出。
这个例子中256转成char(8bit)后的值为0, 也就是取0x100的后两位。
(Without a type modifier, the corresponding argument is treated as an int (for the signed conversions `%i' and `%d') or unsigned int (for the unsigned conversions `%o', `%u', `%x', and `%X'). Recall that since printf and friends are variadic, any char and short arguments are automatically converted to int by the default argument promotions.
`hh' Specifies that the argument is a
signed char or unsigned char, as appropriate. A char argument is converted to an int or unsigned int by the default argument promotions anyway, but the `h' modifier says to convert it back to a char again.
)
3993

被折叠的 条评论
为什么被折叠?



