黑马程序员技术交流社区

标题: 深夜急求答案int类型数字0~9能不能用char类型输出? [打印本页]

作者: 郭来印    时间: 2015-8-12 02:23
标题: 深夜急求答案int类型数字0~9能不能用char类型输出?
如题:int类型数字0~9能不能用char输出?例如:(int)5——》(char)5?能不能这样?有没有什么办法?
新手求答案!
作者: wxh794708907    时间: 2015-8-12 10:15
你试下不就可以了吗
作者: 65006636    时间: 2015-8-12 11:17
你可以给一个char型变量赋值int型,但是是无法以char型打印的,只能以printf("%d")的形式打印,原因是printf函数在缓冲区中只会查找与格式控制字符串相符的对象,如果以%c查找,虽然在缓存区中有int型存在,但是其会被跳过,打印值为空
作者: 408205555    时间: 2015-8-12 11:20
可以,但需要类型转换。而且,用char类型输出后,5就不是int类型了,而是char类型,由原来的5变成了'5'
作者: 郭来印    时间: 2015-8-12 13:19
65006636 发表于 2015-8-12 11:17
你可以给一个char型变量赋值int型,但是是无法以char型打印的,只能以printf("%d")的形式打印,原因是print ...

如果说你打印一个数的值,这个数可能是十进制也可能是八进制或者二进制、十六进制,怎么打印?十六进制中有“A,B,C,D,E,F“ 用%d的格式和%c的格式都没有办法打印吧!?
作者: 郭来印    时间: 2015-8-12 13:21
408205555 发表于 2015-8-12 11:20
可以,但需要类型转换。而且,用char类型输出后,5就不是int类型了,而是char类型,由原来的5变成了'5' ...

怎么转?
作者: 郭来印    时间: 2015-8-12 13:31
wxh794708907 发表于 2015-8-12 10:15
你试下不就可以了吗

怎么试啊?
作者: 65006636    时间: 2015-8-12 23:59
郭来印 发表于 2015-8-12 13:19
如果说你打印一个数的值,这个数可能是十进制也可能是八进制或者二进制、十六进制,怎么打印?十六进制中 ...

你之前的问题只提到int,所以是以%d打印,如果是16进制就只能以%x打印,还有八进制二进制都是一个道理,强制转换可以把int等一些类型的变量赋给char型变量,然后以这个char变量打印,但是由printf函数输出依然是其本来的int等等型别,而不是char。
作者: 65006636    时间: 2015-8-13 00:13
郭来印 发表于 2015-8-12 13:19
如果说你打印一个数的值,这个数可能是十进制也可能是八进制或者二进制、十六进制,怎么打印?十六进制中 ...

你之前的问题只提到int,所以是以%d打印,如果是16进制就只能以%x打印,还有八进制二进制都是一个道理,强制转换可以把int等一些类型的变量赋给char型变量,然后以这个char变量打印,但是由printf函数输出依然是其本来的int等等型别,而不是char。这个问题的答案就是——严格意义上讲是不能以char型输出int的,char占1个字节,而int是4个,这就是本质的区别,就算打印出来了012345这些了,打印出来的还是int型,或者float或者几进制,都是一个道理,希望可以帮到你。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2