一个简单的C语言问题
mian() {char c1,c2; c1=300; c2=400; printf("%c,%c\n",c1,c2); printf("%d,%d\n",c1,c2); } 为什么输出结果是: ,,E 44,-112 请告诉我原因.
char型的变量在大部分编译系统里是一个8位变量。也就是其对应的整形绝对量是0-255; 你把300和400强行赋值给一个8位char型变量,那么溢出部分自动舍弃。具体分析: 300的二进制形式为100101100,400的二进制是110010000;赋值给8位量后,300就变成了101100,400就变成了10010000,又由于这些都是8位系统的补码形式,因此转换为整数后,300就等于44,400就等于-112。这就是你printf("%d,%d\n",c1,c2)输出是44,-112的原因。 而如果按照等效原码形式来看,300等于44,400等于144,44的acsii码是“,”,144的acsii是一个带有小上标的“E”。这就是你printf("%c,%c\n",c1,c2)得到,,E的原因。
那是因为ASCII码是0—255。 300和400都操过了这个定义范围。
问:C语言C语言C语言C语言C语言 josephus问题,急!!!
答:josephus问题是什么? 你把问题贴出来,才好解决.详情>>
答:我建议你去--天下网吧联盟 这里面都是网吧业主和网管交流的论坛,你可以自己注册一个用户进去看看,你可以和他们交流也可以寻求他们的帮助,我想没有你解决不了的问题,...详情>>
答:格式化文本区域的段落标记,用于规定文本和层的属性和位置等。比如: 新浪网 用来规定 新浪网 这三个字居中显示。 文本中心(CENTER)、左(LEFT)或右(R...详情>>