- 论坛徽章:
- 0
|
请教一下大家,下面这段代码的两次打印输出为什么不一样呢
- #include <stdio.h>
- int show_bytes( char *start, int len )
- {
- int i;
- for (i = 0; i < len; i++)
- printf(" %.2x", start[i]);
- printf("\n");
- }
- int show_bytes_1( unsigned char *start, int len )
- {
- int i;
- for (i = 0; i < len; i++)
- printf(" %.2x", start[i]);
- printf("\n");
- }
- int main()
- {
- short int x = -12345;
-
- show_bytes( &x, sizeof( short int ) );
- show_bytes_1( &x, sizeof( short int ) );
-
- }
复制代码
其输出为:
ffffffc7 ffffffcf
c7 cf
为什么第一次输出会是十六个字节呢?如果是在调用printf时进行类型提升,那为什么第二次打印时show_bytes_1没有进行相同的操作呢? |
|