CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

请教

楼主zhagnujn(艺海拾贝)2005-06-02 19:15:15 在 C/C++ / C语言 提问

#include<stdio.h>  
  void   main()  
  {  
          char   c;int   i;  
          c=43;i=c;  
          printf("i=%d\n",i);  
          c='\376';i=c;  
          printf("i=%d\n",i);  
  }  
   
  为什么第二次i的输出是-2,搞不懂,请指教 问题点数:50、回复次数:7Top

1 楼fancyf(凡瑞)回复于 2005-06-02 19:18:33 得分 0

c=11111110=-2  
  Top

2 楼nasi00(莫傲·逍遥)回复于 2005-06-02 19:30:40 得分 0

你想让他输出多少?Top

3 楼mostideal(三甲)回复于 2005-06-02 22:40:09 得分 0

你认为结果是多少呀。。Top

4 楼zhagnujn(艺海拾贝)回复于 2005-06-03 09:11:10 得分 0

为什么会是c=11111110=-2  
  我知道存的是ASCII码,但为什么会是c=11111110=-2?  
  可以详细说明一下吗?谢谢Top

5 楼mccxj(老鼠不逛街)回复于 2005-06-03 09:15:46 得分 0

11111110  
  因为是补码形式。。由于前面是1。。所以是负数。。还记得负数取补码是取反加1把。。到过来就是-1取反把。。呵呵。。就是00000010。。就是2了。。而它前面已经说是个负数了。。所以就是-2咯。。Top

6 楼wlfc(tongan)回复于 2005-06-03 09:24:44 得分 50

在C/C++中,字符可当作整数使用,但是有符号整数,取值范围是-128~127,将一个整数赋给一个字符时,超过这个范围就要进行转换,11111110是\376转换后的值,可能是补码表示,其值为-2。  
  Top

7 楼clear117(小风)回复于 2005-06-03 09:40:38 得分 0

哈哈     我在AIX   Version   5运行的结果是  
  i=43  
  i=254  
   
  Top

相关问题

关键词

  • 补码
  • 负数
  • 整数
  • 就是

得分解答快速导航

  • 帖主:zhagnujn
  • wlfc

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo