小计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个不同的结果,如下:


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

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

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

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


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。