打印

华为笔试题

[复制链接]
1394|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hsbjb|  楼主 | 2012-3-27 18:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
内容正文:1.写出判断ABCD四个表达式的是否正确,若正确, 写出经过表达式中 a的值(3分)
int a = 4;
(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);
a = ?
答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;
改后答案依次为9,10,10,11

为什么C错误????但是换为(++a)有没问题呢???

相关帖子

沙发
xsgy123| | 2012-3-27 18:26 | 只看该作者
(a++) 一个临时变量,非左值,不能赋值。
话说这4个答案都有问题,得看编译器

使用特权

评论回复
板凳
txcy| | 2012-3-27 21:35 | 只看该作者
这出题的水平不咋地

使用特权

评论回复
地板
秋天落叶| | 2012-3-27 21:44 | 只看该作者
这出题的档次有待提高啊

使用特权

评论回复
5
缪僚雾人| | 2012-3-28 08:55 | 只看该作者
6
lai832| | 2012-3-28 09:17 | 只看该作者
(a++) +=a;

先变换没争议的部分

(a++) = (a+1) + a;
问题在于:

a++
表示:先用了a的值,再自加1
但:
这里存在两次赋值问题:
a 是等于: (a+1) +a 还是a+1????
这是问题所在.

其它的,没弄过,不清.
IAR编译:
  int a;
  a=4;
  (a++) +=a; //X
  (++a) +=a; //X
  a +=(a++);
  a +=(++a);
  (++a) += (a++);//X

带注释:"//X"的为错
提示:
Error[Pe137]:expression must be a modifiable lvalue
Error[Pe137]:expression must be a modifiable lvalue
Error[Pe137]:expression must be a modifiable lvalue
Error while running C/C++ Compiler

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

193

主题

2354

帖子

0

粉丝