原题是:
下面的程序的结果是多少?(中国著名通信企业S公司07年8月的面试题)
#include <stdio.h>
int main()
{
unsigned int a = 0xFFFFFFF7;
unsigned char i = (unsigned char)a;
char* b = (char*)&a;
printf("%08x, %08x", i, *b);
return 0;
}
输出结果是:000000f7,fffffff7.
我们用VC6.0调试得到这段程序的反汇编代码,代码如下:
5: unsigned int a = 0xFFFFFFF7;
00401028 mov dword ptr [ebp-4],0FFFFFFF7h
6: unsigned char i = (unsigned char)a;
0040102F mov al,byte ptr [ebp-4]
00401032 mov byte ptr [ebp-8],al
7: char* b = (char*)&a;
00401035 lea ecx,[ebp-4]
00401038 mov dword ptr [ebp-0Ch],ecx
通过这段汇编代码,我们容易看到:
[1] 对于unsigned char i = (unsigned char)a;这条语句的执行过程可以看出,有个数据截断的过程,将a的低八位赋值为i。
[2] 对于char* b = (char*)&a;语句,首先将a的地址存储到一个寄存器中,然后直接赋给了b。所以b指向的地址也是a的内存地址。后面的*b当然就指向了这块内存的内容了,即fffffff7.
分享到:
相关推荐
### 数据结构考研题知识点分析 #### 一、选择题 1. **算法的计算量**:题目中的“算法的计算量”实际上指的是算法的**时间复杂度**,即算法执行所需时间与输入数据规模的关系。选项中的“复杂性”更准确地描述了这...
第十三题是一道比例计算题,需要根据男女员工比例变化和总人数变化来求解今年男员工的人数。 【知识点十四:社会现象定义】 第十四题定义了“漂二代”的概念,指的是随父母迁移并在外生活的人,案例C符合这一定义。...
4. 第5题涉及二进制和十进制之间的转换,这是计算机科学基础中的基本操作。 这些题目综合测试了考生对复数运算的理解和对算法逻辑的掌握。在复习这些内容时,学生应熟练掌握复数的基本运算,理解复数在复平面上的...
学生应该仔细分析每一道题的解题思路,确保自己完全理解每一个概念,并能够灵活应用到实际问题中。同时,通过反复练习和理解,可以提高解决计算机相关问题的能力,为未来的学习打下坚实的基础。
1. 首先,仔细阅读并理解每一道真题,分析其考察的知识点。 2. 接着,根据题目要求,尝试解答,遇到困难时查阅相关资料。 3. 完成解答后,对照答案检查,分析错误原因,深化理解。 4. 定期回顾,巩固记忆,尤其是...
【计算机组成原理试题详解】 计算机组成原理是计算机科学与技术领域的基础...在复习过程中,不仅要看答案(02da和03da),更应深入思考每一道题背后的原理,将理论知识与实践应用相结合,从而在考试中取得理想的成绩。
数学建模的核心是将复杂的问题转化为数学模型,通过数学分析、计算和模拟来求解。2013年的竞赛试题可能涵盖了多个领域,如经济、环境、工程、社会学等,每道题目都要求参赛者运用不同的数学方法进行处理,如微积分、...
南京摩托罗拉公司的笔试题主要针对应聘软件开发岗位的候选人,内容涵盖C语言编程、Java编程、无线网络基础知识及一道智力题。下面将详细解析部分试题。 ##### 1. 选择题 **1.1 无线通信基于哪种协议(802.11)** ...
《微机原理习题集及答案》是一份针对微机原理学习的重要参考资料,它包含了大量练习题和对应的解答,旨在帮助学生深入理解和掌握微机原理的基础知识和应用技巧。这份资料采用WORD文档格式,便于阅读和打印,为自主...
2. 函数 $f(x) = \ln(x^2 + 1)$ 的图象:这是一道考察对数函数的题目,2013年福建卷的第5题。由于 $x^2 + 1$ 对所有实数$x$都是正的,因此该函数在整个实数域内都有定义,且随着$x$的增大,其增长趋近于直线。因此,...
编译原理是计算机科学中的一个重要领域,主要研究如何将高级编程语言转换为机器可以理解的低级语言,如汇编代码或机器代码。这门学科对于计算机科学专业的学生和软件开发者来说至关重要,因为它揭示了程序如何被...
每一道题目都是一个学习和提高的机会,建议逐一分析,深入理解其背后的原理,然后动手实践,以达到巩固和扩展技能的目的。在解题过程中,遇到困难不要气馁,多查阅资料、讨论交流,这将有助于你在单片机的学习道路上...
2. 十六进制与二进制转换:理解如何在不同进制之间转换数据。 3. 位操作:熟练运用异或、位移等位操作进行数据处理。 4. 多线程编程:理解线程同步机制,如线程标识符和同步原语。 5. 密码学基础:熟悉异或密码、...
**汇编语言**:虽然接近机器语言,但还需要经过汇编器转换成机器语言才能被执行。 - B. **机器语言**:可以直接被计算机硬件识别。 - C. **高级程序语言**:如Java、Python等,需要经过编译或解释才能运行。 - D...
还有题目"被隐藏的真实",该题涉及到了底层汇编语言的逆向和反混淆技巧。选手们需要手动分析汇编代码,处理IDA等工具的混淆输出,以及理解C++符号修饰等底层技术。这道题目考察了选手对于程序逆向和底层分析的能力,...
- **void指针**:`void*`指针可以指向任何类型的对象,但要访问该对象时必须显式转换为正确的类型。 - **应用场景**:`void*`指针在泛型编程中十分有用,尤其是在实现多态性或通用函数时。 #### C/C++语言可变参数...