1.在c语言中,=并不意味着相等, 例1,如:bmw = 2002 解读:语句不读作bmw等于2002,而读作“把2002赋给变量bmw";
例2,如i= i + 1; 解读:找出变量i的值,把该值加1,然后把新值赋给i;
2.赋值运算符左侧必须引用一个存储位置(对应一个地址)。最简单的方法是使用变量名;
3.由赋值运算符= 构成的简单语句叫赋值表达式语句,其目的是把值存储到内存位置上;
4. a、对象指的是实际的数据存储;使用变量名是标识对象的一种方法; ? ? b、用于存储值的数据存储区域(一段内存)称为数据对象; ? ? c、在学习名称时,被称为”项“(如,赋值运算符左侧的项)的就是运算对象。运算对象是运算符操作的对象;
5.左值:? 1)左值是c语言的术语,用于标识特定数据对象(一段内存)的名称或表达式,是用于标识或定位存储位置的标签;
2)早期的c语言,提到左值,意味着: ? ①它指定一个对象,所以引用内存中的地址; ? ②它可用于运算符的左侧;
????????但是,c的标准中新增了const 限定符。用const创建的变量不可改变,可以叫做不可修改的左值,故②它可用于运算符的左侧,已经不适用; ????????因此,c标准新增了一个术语:可修改的左值,用于标识可修改的对象,可以放在赋值运算符的左侧或右侧。 ????????所以赋值运算符的左侧应该是可修改的左值;(也可以说赋值运算符的左侧运算对象应该是可修改的左值);
? 6.右值:本身不是左值,且能赋值给可修改的左值的量。右值可以是常量、变量或其它可求值的表达式;
例子: int ex; int why; int zee; const int ?? ?two = 2; why = 12; zee = why; ex = two * (why + zee);
解读: ①ex、why和zee都是可修改的左值;two是不可改变的左值; ②const int two = 2;//表示初始化而不是赋值,因此不违反规定; ③12是右值,因为不能引用某指定内存位置; ④表达式(why + zee)是右值,该表达式不能表示特定内存位置,而且也不能给它赋值。只是程序计算的一个临时值,计算完毕就会被丢弃; ? ? ? ?? ? ?7.赋值运算符 = 支持三重赋值。 例子:int i,j,k; ? ? ? ? ? i = j = k =1; 三重赋值的顺序是从右到左;
(内容来<<C Primer ?Plus (第6版)中文版>>)
|