正文

[004] 整形变量以字符输出时的范围2006-02-10 23:54:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wentao/10053.html

分享到:

    字符变量在计算机内占一个字节,而整形变量占两个字节,因此整形变量在可输出字符的范围内(ASCII码为0~255这间的字符)是可以与字符数据互相转换的.如果在此范围外,则不能代替. #include <stdio.h>main(){    int a, b;    printf("请输入两个整数 a, b:\n");    scanf("%d,%d",&a,&b);    printf("按字符输出为:\n");    printf("%c,%c\n",a,b);    char c1, c2;    c1 = a;    c2 = b;    printf("转换为字符型后按整数输出为:\n");    printf("%d,%d\n",c1,c2);} 运行结果:========================================请输入两个整数 a, b:97,289↙按字符输出为:a,!转换为字符型后按整数输出为:97,33========================================★ c1,c2是字符型变量,只占一个字节,只能存放0~255范围内的整数,97为a的ASCII码,而289超过了255,所以只将b在内存中的低8位赋值绐c2 (b按字符输出时同理) , 289-255=33 而33为!的ASCII码. ★ Turbo C 把字符处理成带符号的整数。######################################更正########################################经网友指出, 做如下改正:289-255=33显然是错误的, 应该是289-256=33。从0~255共是256个,所以应该减去256而非255。换成二进制就清楚了,289是100100001,按字符输出时取后8位00100001,即33。

阅读(4940) | 评论(3)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册