版权声明:本文为博主原创文章,未经博主允许不得转载。

写这篇博客前请让博主先吐糟下自己的PC.

i3+2G内存+开了一上午=C盘剩下0字节+打开VS2012花了半个小时+一晚上的心情不好

吐槽完PC,再说下今天下午的面试。。

今天也真是囧的不行,面试的时候面试官带着我找会议室,结果发现每个会议室都有人在面试,无奈,最后在三楼的一个拐角处正好有个桌子,就开始了面试。。

面试官还是个女技术员,囧的来了,估计面试的公司对控制这块应用的比较多,而我大学接触到的控制,算法却比较少,我就讲着自己大学里做过的项目,基于STM32啥啥啥blablabla。。。,女技术员估计没接触过STM32,所以看起来也不知道我在说啥,完了就问我这个项目用的什么通信协议,我心想这下有的聊的,我就说uip协议,是一个短小精悍的嵌入式网络协议。。女面试官脸色又犯难了,我心想,卧槽,看来没听过uip协议啊,这没法聊了啊。。女技术员停顿了一会开始放大招了,问我,你接触过DSP吗?我就老老实实答说,上过这门课,做过简单的实验,但是没有深究,没用来做过项目。然后她又问,你知道modbus,我说知道,只是听过。。(因为这个也是我大学里逛论坛时看过的,但是没拿来研究过,只是知道有这么个通信协议),完了又问我知道can协议吗,我说知道,只是听过,我说完我自己都后悔,说实话,这也是以前逛论坛时看到的,也没哪来细究过。女面试官又停了会,我心想歇菜了,估计下一句就是回家等通知了吧(毕竟这是最完美的企业拒绝方式 : ))。女研究员站起来了,然后我也站了起来,女研究员又说,那个你先等会。然后她转身去了一个办公室,然后就听到她和一个男性在说话,过了一会出来后,跟我说,你进去跟我们技术总监聊下吧。技术总监?尼玛,快吓尿了啊,不过之前也是有多家面试经验了,于是我就故作淡定带着微笑的进去了,进去后,坐下来,技术总监并没有问我技术上的问题,反而问了好多人生理想,目标,职业规划的问题,说实话,我还真从来没准备过他问的那几个问题,也只能快速转着脑袋应对,聊了估计有好几十分钟,聊的也挺开心,最后也算是领悟到一些东西,也挺感谢他的。

好了,吐槽结束!

正文开始~~

今天这个面试题很简单,但是我花了好长时间去研究,主要也是被书中的作者解析误导,不然这篇博客也不会到现在还没写好(昨晚一晚上加今天一上午T_T)。

先贴代码~

 #include <iostream>
using namespace std;
int main ()
{
unsigned char a=0xa5;
unsigned char b=~a>>+;
printf("b=%d\n",b);
return ;
}

这里应该是考察两个概念:1.运算符号的优先级的问题.2.类型转换的问题。

类型转换的问题详见上篇博客。: )

对于算符的优先级问题,是先取反,还是先右移,还是先加?

好吧,其实我也不知道,但是汇编一定知道。: )

贴上反汇编代码~(只从主函数开始截)

 int main ()
{
002D436A push esi
002D436B push edi
002D436C lea edi,[ebp-0D8h]
002D4372 mov ecx,36h
002D4377 mov eax,0CCCCCCCCh
002D437C rep stos dword ptr es:[edi]
unsigned char a=0xa5;
002D437E mov byte ptr [a],0A5h
unsigned char b=~a>>+;
002D4382 movzx eax,byte ptr [a]
002D4386 not eax
002D4388 sar eax,
002D438B mov byte ptr [b],al
printf("b=%d\n",b);
002D438E movzx eax,byte ptr [b]
002D4392 mov esi,esp
printf("b=%d\n",b);
002D4394 push eax
002D4395 push 2DCC70h
002D439A call dword ptr ds:[2E03B8h]
002D43A0 add esp,
002D43A3 cmp esi,esp
002D43A5 call __RTC_CheckEsp (02D12D0h)
return ;
002D43AA xor eax,eax
}

第十条语句表示,将a5h填在[a]的一个字节处。12表示将[a]处的一个字节填到eax寄存器中,这里的movzx将eax扩展到了32位!而并非XX宝典中的16位!此时的eax为0x000000a5,13表示取反,eax为0xffffff5a,14表示右移,且高位不变,所以此时的exa为0xfffffffa,15表示将低八位填到[b]所在的一个字节处,也正是对应C中的赋值给一个unsigned char b变量发生字节截断,此时的b为0xfa,也就是十进制的250。

以上使用汇编语言解释,这样更容易理解,如果用C来解释的话是什么呢,根据C99标准中的“integer promotions”:在对a进行4移位时,会把a提升到整形,即四个字节,再赋值给unsigned char时又会发生字节截断。同样可以得到b的值为250。: )

关于C99中的”integer promotions“还有很多值得细究的东西,后面我会进一步学习。:)

an interview question(4)的更多相关文章

  1. an interview question(1)

    声明:本文为博主原创文章,未经博主允许不得转载. 以下是英文翻译: warnning: Copyright!you can't reprint this blog when you not get b ...

  2. Core Java Interview Question Answer

    This is a new series of sharing core Java interview question and answer on Finance domain and mostly ...

  3. shit LeetCode interview Question

    shit LeetCode interview Question https://leetcode.com/interview/1/ 有点晕,啥意思,没太明白,到底是要按什么排序呀? 去掉 标识符 不 ...

  4. JavaScript interview Question - Create a Array with two papameters without using loop!

    JavaScript interview Question - Create a Array with two papameters without using loop! JavaScript - ...

  5. An interview question from MicroStrategy

    去年校招时的一道面试题,觉得蛮有意思,贴出来. Question: Spy start at a, during an interval he moves |b| to right when b &g ...

  6. an interview question(3)

    最近看了些C面试题顺便复习一下C语言,现贴一些出来和大家分享. #include <stdio.h> void main () { ,,,,};--------- *(ptr++)+=; ...

  7. an interview question(2)

    感觉现在好多面试题还是很注重基础的,今天面试时就遇到这题,回来一查后才知道此题是国内某著名通信公司的一道机试题:) 给定一个数组input[ ],如果数组长度n为奇数,则将数组中最大的元素放到 out ...

  8. Interview Question

    HDS(11.16.2015): How to design an non-stop website like Google or Amazon? What design patterns are y ...

  9. Amazon Interview Question: Design an OO parking lot

    Design an OO parking lot. What classes and functions will it have. It should say, full, empty and al ...

随机推荐

  1. How to use umbraco datetime property editor

    When I was using Umbraco datetime property editor, I met with a problem that the editor must be firs ...

  2. 基础-DP

    Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like ...

  3. Lunix 命令

    awk '{a[$1]+=1;if(a[$1]==1){print $0}}' awk -F ','  '{print $1, $6}'  IS.csv | sort -k1n -k2n | awk ...

  4. 调优SQL思路

    --调优SQL --sqlreview ->logshipping -> ag辅助副本 --查看正确的执行计划 打开实际的执行计划set statistics io on --查看错误的执 ...

  5. UVa 10917 Dijkstra

    本来就是水题一道. 题意:一个人要从点1去到点2,中间还有很多点和很多条边.问你如果他每次走的边(a,b)都满足:a点到目标点的最短距离<b点到目标点的最短距离,那么他从点1出发到点2总共有多少 ...

  6. UVa 11235 RMQ

    首先讲一下RMQ算法的意思. RMQ(Range Minimum Query,RMQ)范围最小值,给出一个n个元素的数组,计算min(A[L],A[L+1],...,A[R-1],A[R]): 这里运 ...

  7. Jquery EeasyUI等框架中图标的处理方法

    在使用Query EasyUI.Ext等框架开发项目的时候,经常会用到很多小的图标,常见几个图片应用方式总结如下: 一.在jQuery Easyui中添加小图标 1.添加图标的两小步: 先到theme ...

  8. wps使用技巧

    1.和word一样的文档结构图: 视图->文档结构图 (不是导航窗格) 2.粘贴时,出现乱码: WPS->选项->默认粘贴方式:无格式文本. 3.浏览当前文档所在目录: 在WPS的标 ...

  9. sass心得

    1.sass的安装:(1)下载安装Ruby,记得安装的时候勾选第二项,(2)打开控制面板gem install sass(人品好的话,一下子就能安装成功)(3)如果(2)安装不成功进行一下步骤:gem ...

  10. Scala学习资源

    Scala学习资源: Scala官方网站:http://www.scala-lang.org/ Scala github:https://github.com/scala/scala Twitter ...