面试指南 笔记(四) 运算符

  那个++, --的问题我就不写了……

          第一题:运算符优先级问题抓狂

      所有C语言教程上都有吧……《C程序设计语言》第二版中文版 P42页。

      大致一些规律:

1、单目优先

2、带赋值符的特别低,=,+=, -=……==(等等)吐舌头

3、位逻辑优先于代数逻辑,即&,^,| 先于 &&,||,另外,& > ^ > | > && > ||

4、比较运算高于逻辑运算

     另外,type、sizeof是运算符哦,亲!偷笑


       第二题:x = 2; y = 3;(x = 0) && (y = 5) ;print(x,y); ( y = 5) || (x = 1);print(x,y);

       这题跟编译密切相关,虽说上了编译原理课,但是我连中间代码生成都还写不出来……这个短路代码嘛,就是:

       &&和||在判断左侧操作数就能确定结果的情况下,就不再对右侧操作数求值。


       第三题:左值?右值?这是个问题……难过

       右值:是存储在某内存地址中的数据。

       左值:存储数据的那块内存的地址。

       简单的例子就是  x = x-5; 左边的就是左值(一般是变量),右边那完整的一块(变量、表达式、常量)就是一个右值。

       另外,在C++中,左值可以引用到函数上。函数名就是一个地址,所以表示一个左值。

       书中给的例子:int f(char) ,则表达式f就是一个在左值,该表达式引用到对应的函数:int (*p)(char); 那么 *p 也是一个左值。函数类型的左值是不可修改的。

       当然,这个函数引用怎么引用过去的,没说哎……生气


         第四题:sizeof和数据类型的长度快哭了

       这个让我想起我做过的第一份笔试题,在我参加的俱乐部活动中,公司给我们出题考考我们,之后要做项目。最开始拿了一份JAVA/ANDROID,看题后,彻底抓狂,于是又拿了份LINUX/C的来。其中就有好几题sizeof。当时根本不知道,只能是乱填了。

       字符型数据就是一个字节,8位,所以范围只到250+6;sizeof(char) = 1;

       整型的话,现在电脑多半是32位的了,所以sizeof(int\float) = 4; long 应该也是 4。

       指针保存的是一个内存地址,所以,长度和整型是一样的,=4,哪怕它指向的是一个很复杂的结构体,还是 = 4。

       结构体的话,则是把里面的各项的sizeof求和啦!不对,还有内存对齐问题,引入位域的概念,例如:

struct bs { int a:8; int b:2; int c:6;};

        不过,这本书弄得我有些晕了……不知道是不是他出错了。最起码,内存对齐这部分没看懂。


PS:原来下面的文章分类是可以不选的啊……不知道选和不选有什么区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值