华为笔试题

[复制链接]
2129|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 | 显示全部楼层
这出题的档次有待提高啊
缪僚雾人 发表于 2012-3-28 08:55 | 显示全部楼层
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

粉丝
快速回复 在线客服 返回列表 返回顶部