码迷,mamicode.com
首页 > 其他好文 > 详细

【共读Primer】24.<4.4> 赋值运算符 Page129

时间:2018-08-16 20:54:58      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:程序   ons   不能   代码   完全   技巧   primer   表达式   检查   

赋值运算符的左侧必须是一个可修改的值(左值的一般情况)

int i = 0, j = 0, k = 0; // 这些叫做初始化,不是赋值
const int ci = i; //依然是初始化,不是赋值

//1024 = k; // 错误:字面值是右值
//i+j = k;    // 错误:算数表达式是右值
//ci = k;    //  错误:ci是常量(不可修改)是左值

k = 0;
vector<int> vi;
vi ={0,1,2,3,4,5,6,7,8,9};  [C++11]

int ival, jval;
ival = jval = 0;

赋值运算符满足右结合律,所以可以使用连等的方式进行赋值。

赋值运算符的优先级是比较低的,所以它一般左右才被计算。

这里需要提醒一点。赋值运算符和相等逻辑运算符千万不要弄混了,因为编译器检查不出这种错误。

if(x = 1)
{
}

if(x == 1)
{
}

这两个代码在编译过程中都是正确的,但是这样写,程序员所要表达的意思应该是第二种,而不是第一种。

有一个小技巧教给大家,虽然不能完全避免这种情况,但是能避免一大部分了。

在做判断的时候将常量写在等号左侧,这样编译器就会发现这种错误

if(1 = x) //不能给常数赋值,所以这里编译错误
{
}
if(1 == x)
{
}

 

【共读Primer】24.<4.4> 赋值运算符 Page129

标签:程序   ons   不能   代码   完全   技巧   primer   表达式   检查   

原文地址:https://www.cnblogs.com/ChattyKu/p/9489578.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!