关于test12.c
如果把%s 改成%c。为什么结果会变成了P#include <stdio.h>
int main()
{
char a = {'F','i','s','h','C'};
printf("%c\n",a);
return 0;
}
不清楚
改成char 为unsigned char 变成了? 本帖最后由 jackz007 于 2021-2-15 12:01 编辑
a 是一个指针,对于 32 位的操作系统而言,一个指针长度是 4 个字节,64 位系统是 8 个字节,由于 "%c" 只能显示一个字节,而整个指针 a 由 4 或 8 个字节构成,那么,printf("%c") 在显示这个指针的时候,会从 4 或 8 个字节中,抽取最低位的那个字节进行显示,比如,a = 0022FEB3,那么,就会把 B3 显示成 "%c",我们从屏幕上看到的就是一个问号 "?"。
#include <stdio.h>
int main(void)
{
union {
unsigned char * p ;
unsigned char c ;
} b ;
char a = {'F','i','s','h','C'} ;
int i ;
b . p = a ;
printf("%c\n" , b . p) ;
printf("%p\n" , b . p) ;
for(i = 0 ; i < sizeof(char *) ; i ++) printf("%02X , %c\n" , b . c , b . c) ;
} 感谢回复,还没学指针,看不太懂。。
页:
[1]