当前位置: 代码迷 >> C语言 >> 一道C语言符号变量题
  详细解决方案

一道C语言符号变量题

热度:141   发布时间:2007-01-31 22:23:06.0
以下是引用zhanghuan_10在2007-1-31 22:17:02的发言:
呵呵,这个我就不知道了!我的复制过去变成了蓝色了,既然这程序没错就帮着看看为什么运行结果是这个。我不知道codeblocks在那里下载,你知道吗?用惯了!现在用的是c-free.

我编译软件从来都是用VS的

过去用VB,现在用VC

以后学LINUX就打算用GCC了

听说MYTC很好用,我想去用用看看

C―FREE不是很好用

当然,前段时间我的VC坏了

搞笑的是什么函数都没问题

就是if和switch这两个出问题了

导致里边的函数莫名其妙全是错的

我还以为是我的算法错了呢

那天找了好久都没找到错在哪里

结果第二天帮别人写了IF的程序的时候才发现我坏了

笑死我了


----------------解决方案--------------------------------------------------------
呵呵!是挺有意思的!我们的学校的就是gcc,平时在学校做作业的时候用的就是它,我也只会这个了,在校外我找不到在那里下了,没办法先找一个别的了,这是郁闷呢!
----------------解决方案--------------------------------------------------------
我说的是自己分析,结果是怎么来的
----------------解决方案--------------------------------------------------------
我是这么想的!一个字符型的数据是相当于一个小整数!在内存当中是以二进制的形式存储的!无符号的值为254,在内存中是这样存储的00000010(我运行之后得到的),自然是2,有符号的以它的补码形式存储,是111111110,最高位表示符号位!

[此贴子已经被作者于2007-2-1 1:06:12编辑过]


----------------解决方案--------------------------------------------------------
呵呵,楼上的解释错啦。字符变量c占1B的存储空间,它的取值范围为-128~+127,赋值'\376'是八进制形式,即11111110B,对应十进制数为254。但以符号数补码形式表示,就成了-2。变量d是无符号字符型,所以它的值就是254。

另外,楼主的程序复制下来不能编译通过,是因为每个语句前面的空格是在中文(全角)下输入的,而全角字符是不能作为程序合法字符的。

----------------解决方案--------------------------------------------------------
谢谢了!
----------------解决方案--------------------------------------------------------

谢谢各位!我终于弄清楚了,集体的力量是伟大的,相互交流才会碰撞出思想的火花


----------------解决方案--------------------------------------------------------
  相关解决方案