C语言 十六进制怎么输出?

#include<stdio.h>void ejz(int );void bjz(int );void sljz(int );void main(){ int i; scanf("%d",&i); printf("二进制为:"); ejz(i); printf("八进制为:"); bjz(i); printf("十六进制为:"); sljz(i);}void ejz(int a){ int c,b; b=a/2; if(b!=0) ejz(b); c=a%2; printf("%d",c);}void bjz(int a){ int c,b; b=a/8; if(b!=0) bjz(b); c=a%8; printf("%d",c);}void sljz(int a){ int c,b; b=a/16;if(b!=0) ejz(b); c=a%16; printf("%d",c);}

第1个回答  2020-05-03
数据溢出了,十六进制的“cffffff3”对应十进制是“3489660915”,远远超过int型数据的范围,你若将数值改小,比如“ffff3”,最终输出的结果就会相同。
第2个回答  2020-01-03
输出的变量地址是内存地址,十六进制的地址也是符合十六进制的。值跟地址是一致的。因为题中“kptr=&k;”,所以K的地址就是kptr的值。
第3个回答  2014-01-09
将“%d”改为“%x”即可,输出的ABCDE为小写。改为“%X”,输出大写
相似回答