• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    6年前 (2013-04-10)  C++ |   4 条评论  24 
    文章评分 0 次,平均分 0.0
    下面这个题,你能做对吗?
    int a = 4;
    (A)a += (a++);
    (B) a += (++a) ;
    (C) (a++) += a;
    (D) (++a) += (a++);
    a 分别等于多少?
    ++a是先自增,然后返回增加后的变量a,a是变量,本来就可以做左值,所以(a++)++正确;a++是后自增——在表达式里值还是原来的值——返回的是一个等于a+1的临时变量,临时变量是有const属性的,不可以更改,所以(a++)++错误。
    左值和右值
    左值(left value):出现在赋值表达式的左边的表达式,其作用为存放数据空间,且存放是允许的。缩写:lvalue
    右值(right value):只能出现在赋值表达式的右边。缩写:rvalue
    左值也可以作为右值表达式,变量可以是左值,也可以为右值,但常量只能是右值。
    a=b   // b是变量,在这里是左值,也可以作为右值
    a=8   // 8是常量,只能作为右值
    (a=4)=28   //  C++语法规定:a=4为左值,28为右值操作符的优先级与结合性
    c = a + b           // OK
    c = a + + b         // Error
    c = a + + + b       // OK a ++ + b
    c = a + + + + b     // Error a ++ ++ b
    c = a + + + + + b   // Error a ++ ++ + b

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/530.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享