main(){ char a[]="a"; char b='b'; int c=0x12ff7c; printf("%x\n",a); //输出 12ff7c printf("%c\n",a); //输出 | printf("%d\n",b); //输出 98 printf("%c\n",b); //输出 b printf("%c\n",c); //输出 | printf("%x\n","wefd"); //输出 ? printf("%c\n","dfdfd"); //输出 ? printf("%c\n","fd"); //输出 ? printf("%c\n","jku"); //输出 ? int aa=020,ba=0x10; printf("%d\n",aa); //输出16 printf("%d\n",ba); //输出16
}
1, a是一个数组,所以a为地址,即0x12ff7c,所以%c输出时为将该地址当成单个字符处理,即对地位的0x7c以%c格式输出,即输出“|”(因为|的ASCII码是0x7C)。2, b是一个字符,所以b在内存中为b的ASCII码98,所以很好理解为什么输出的是98 和b。3, c是一个数字,0x7c为低位,所以输出0x7c的ASCII码"|"。4, 最后四个为将字符串以%c的格式输出,输出为“?”,不知道该如何理解。。。。。。
5,aa和ba一个是8进制一个是16进制。
|