Chinaunix首页 | 论坛 | 博客
  • 博客访问: 45574
  • 博文数量: 5
  • 博客积分: 137
  • 博客等级: 入伍新兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-22 08:49
文章分类
文章存档

2011年(5)

分类: C/C++

2011-10-13 17:17:41

         最近在准备升本考试,在复习C语言时,发现几个以前忽略的问题,现在在回过头来看C语言去研究这些东西感觉挺有意思的,虽然国二考过了,但是在准备国二的过程中并没有像现在这样发现这么多小的知识,也许以前有很多东西还没吃透吧,但现在再去理解很多东西都觉得其实挺简单的,现在就跟大家分享一下:
1.进制转换
  '\xe0'表示的是十六进制,将他用十进制输出时,竟然出现了意想不到的结果,如果没在VC里运行单靠用笔来算的话,那么得到的结果是224,因为14*16=224,但是在VC里运行的结果却是-32,这是为什么呢,原来在计算机内部224以二进制形式存储的是11100000,最高位是1,那么计算机会认为是一个负数,而不是我们算得认为的224,既然是一个负数,那么计算机输出时就要以原码的形式输出,11100000的原码是10100000,他的十进制是32,别忘了他的最高位表示的是符号位,所以输出的就是-32了。这个结果如果仅靠笔算的话还真不好算,因为计算机毕竟不是人,他的算法规则是一定的,不管数怎么变他都按他的预设好的算法规则来。
2.自增自减
 ++、——问题一直是个问题,它牵扯到到底是先用还是先增,说白了,如果++、——在后面那么就先用,在后面就先增再用,但是有这种情况就是a=i+++i+++i++这种情况,那么就不像前面说的那么简单了,首先所有的++号都先不看,只算三个I值相加的结果,最后再将I值自增三次得到I值。如果是a=++j+++j+++j呢,那么就要考虑到+号的一个性质就是做结合性,首先将前两个j自增两次相加然后再和后面的自增三次后的j相加,才能得到结果。
   这是这几天看了题,做了题,改了题之后得到的以前不太明白的一点小心得!
阅读(9491) | 评论(25) | 转发(0) |
0

上一篇:sql小练习

下一篇:没有了

给主人留下些什么吧!~~

KennyDark2011-10-14 19:40:52

编译器, 运行环境, 上下文,体系架构......影响程序运行结果的因素多了去了, 你其实没必要了解的那么多,学不来, 再加上时间没那么多. 既然是学数据库的, C一边去~~~~
其实大家是妒忌你上了首页, 不是针对你~~~~~

朱宝艳2011-10-14 18:50:17

pmerofc: 两点全是错的
这样的博文居然上头版
天理难容.....
因为我也处于学习阶段,请指教。。。

朱宝艳2011-10-14 18:47:42

pmerofc: 两点全是错的
这样的博文居然上头版
天理难容.....
因为我也处于学习阶段,请指教。。。

KennyDark2011-10-14 17:53:46

我承认,我被骗了, 我没仔细看文章内容

davelv2011-10-14 17:46:59

五岳之巅: 其实第一个问题上课讲过,我举了个-2的例子说明原码和补码,正数与负数;第二个问题的处理技巧上课时也是讲过的,最后还有个超长的练习题。
i=1;
j=(i++.....
老湿,您就別再误人子弟了。。。