c语言高手
oid main() { int ch; scanf("%c",&ch); printf("%d",ch); } 当输入a时,为什么输出3169,而不是a的ascii码97,int型与字符型不是通用吗
int ch; -> ch 是整数,32位或16位 scanf("%c",&ch); -〉输入的只是ch的第一个字节,8位,高24位或8位未知 printf("%d",ch); -〉输出32位或16位整数,高24位或8位未知,低8位为输入的字符的ascii 改: 方法一: void main() { char ch; scanf("%c",&ch); printf("%d",ch); } 方法二: void main() { int ch; scanf("%c",&ch); ch &= 255; printf("%d",ch); }
实际上,使用LZ的代码,输出3169只是其中的一种情况。 由于char型与int型在存储上的一致(char型存储的是ASCII值),所以两者在一定程度上是通用的,这种理解没错。 但是由于两种类型分配的内存字节数不一致(int两个字节,char一个字节),所以在输出时,要考虑实际输出的字节数。 LZ声明了一个int型,系统分配2个字节,而以char型输入时,只能使用其中的一个低位字节,而且内存中总是会存在一些不确定的数据,同时%d又是以2个字节输出,所以就会出现实际与理解不一致的情况了。 解决办法:声明int型变量时,同时初始化。如:int ch=0;
答:退格键是指删除键,也就是说,如果用户按了删除键,就意味着删除刚才输入的一个字符,将这个字符弹出栈外详情>>
答:我建议你去--天下网吧联盟 这里面都是网吧业主和网管交流的论坛,你可以自己注册一个用户进去看看,你可以和他们交流也可以寻求他们的帮助,我想没有你解决不了的问题,...详情>>
答:格式化文本区域的段落标记,用于规定文本和层的属性和位置等。比如: 新浪网 用来规定 新浪网 这三个字居中显示。 文本中心(CENTER)、左(LEFT)或右(R...详情>>