小计C/C++问题(1)

本文主要记录了以下2个问题:

  1. 表达式中,有符号变量和无符号变量的转化问题
  2. C/C++中,main函数执行完以后,还执行了什么语句?

这里简单的说一下我的环境:Win7 32位,Qt creator 5.4.1 编译器MinGW4.9.2 32bit 调试器:GNU GDB 7.8


问题1:表达式中,有符号变量和无符号变量的转化

关于这个问题,网络上流传着这样一个误导:说是,表达式中存在有符号数和无符号数的时候,无符号数 会转化为 有符号数,然后再计算.而实际,应该是这样的: 当表达式中存在有符号和无符号的数,计算的结果转化为无符号的。况且,你应该还要注意使用的场合。当你的表达式用于比较判断和直接计算输出完全是2个不同的结果,如下:

001


问题2:C/C++中,main函数执行完以后,还执行了什么语句?

关于这个问题,你需要知道一个函数atexit(也就是 at exit,看到这个你应该明白了,在exit退出的时候),关于这个函数,你可以参考百度百科。功能:注册终止函数(即main执行结束后调用的函数)。代码示例:

005

这样看,我觉得不可能体会到这个函数,所以我想看一下汇编是怎么运行的,所以如下:

006

从汇编看,当执行return 0以后,并没有立刻结束,而是汇编跳转了,然后运行了其他的命令才退出的。可能这个函数本人还没有真正的使用过,不能深刻的理解其含义。如果内容有错,还请指出。


posted @ 2015-06-05 15:49  [0]  阅读(479)  评论(0编辑  收藏  举报