/* 目录: 一 不同类型用其他类型输出 二 看原理 */
一 不同类型用其他类型输出
int main() { printf("%d ", 'c'); // 输出方式: 字符类型 - 整数类型 printf("%c", 99); // 输出方式: 整数类型 - 字符类型 return 0; }
/* 99 c */
二 看原理
int main() { 00044290 push ebp 00044291 mov ebp,esp 00044293 sub esp,0C0h 00044299 push ebx 0004429A push esi 0004429B push edi 0004429C lea edi,[ebp-0C0h] 000442A2 mov ecx,30h 000442A7 mov eax,0CCCCCCCCh 000442AC rep stos dword ptr es:[edi] printf("%d ", 'c'); 000442AE push 63h 000442B0 push offset string "%d " (046CC0h) 000442B5 call _printf (04131Bh) 000442BA add esp,8 printf("%c", 99); 000442BD push 63h 000442BF push offset string "%c" (046B4Ch) 000442C4 call _printf (04131Bh) 000442C9 add esp,8 return 0; 000442CC xor eax,eax }
printf("%d ", 'c'); 000442AE push 63h
原理: 编译器对字符类型提取做转换->整数类型