什么是变量?这是首要问题.
变量提供了程序可以操作的有名字的存储区.C++中的每一个变量都有特定的类型,该类型决定了内存的大小和布局、能够存储于该内存中的值的取值范围以及可应用在该变量上的操作集.变量通常被称为"变量"或"对象"(object)
左值跟右值
左值 lvalue,可以出现在赋值语句的左边或右边
右值 rvalue,只能出现在赋值语句的右边
变量是左值,因此可以出现在赋值语句的左边,数字字面值是右值,因此不能被赋值.
给定以下变量: int units_sold=0;
double sales_price=0,total_revenue=0;
而:
units_sold*sales_price=total_revenue; //arithmetic expression is not an lvalue
0=1; //literal constant is not an lvalue 数字字面值不是左值
左值出现的上下文决定了左值是如何使用的.例如:
units_sold=units_sold+1;中,units_sold变量被用作两种不同操作符的操作数. +操作符仅关心操作数的值.变量的值是当前存储在和该变量相关联的内存中的值.变量units_sold也被用作=操作符的左操作数. =操作符读取右操作数并把它写到左操作数. 在这个表达式中,加法运算的结果被保存到与units_sold相关联的存储单元中,而units_sold之前的值则被覆盖.
所以说是相关联,不一定是特定时候的存储区 = =
区分左值跟右值:简单来说,左值就是变量的地址,或者是一个代表"对象在内存中的位置"的表达式.右值就是变量的值
出现在赋值运算符左边的变量就是一个左值,出现在赋值运算符右边的变量名或者字面常量就是一个右值.
例如: vall=val2/8 vall就是一个左值,val2跟8都是右值
术语:什么是对象.
这个对象可不是你拍拖的对象 - - 程序员经常把对象挂在嘴边,不知道的还以为这丫又搞上谁了.一般而言,对象就是内存中具有类型的区域.说的更具体一点,计算左值表达式就会产生对象....
严格的说,有些人只把术语对象用于描述变量或类类型的值.有些人还区别有名字的对象和没名字的对象,当谈到有名字的对象时一般指变量,还有一些人区分对象和值,用术语对象描述可被程序改变的数据,用术语值描述只读数据.
而我遵循更为通用的用法,就是:对象是内存中具有类型的区域.我们可以自由地使用对象描述程序中可操作的大部分数据,而不管这些数据是内置类型还是类类型,是有名字还是没名字的,是可读的还是可写的. OVER
接下来看看变量的命名.跟现在很多父母斥资成千上万给孩子起名却被起名公司忽悠不同,咳咳,变量它是有自己的一套命名习惯的.我们命名的变量是厚道的 - -
变量名,就是变量的标识符(identifier),可以由字母、数字和下划线组成.但是,必须以下划线和字幕开头,而且,字母的大小写是有区别的,VAL跟val就是不同的两个变量名.
int somename,someName,SomeName,SOMENAME;这是四个不同的变量,很到位吧
语言本身并没有限制变量名的长度,但是考虑到阅读和修改代码,变量名不应该太长.
C++关键字. C++保留了一组词用作该语言的关键字.关键字是不能用作程序的标识符.除此之外,C++还保留了一些词用作各操作符的替代名.这些替代名用于支持某些不支持标准C++操作符号集的字符集. 例如:and 、not、or等除了关键字,C++标准还保留了一组标识符用于标准库.标识符不能包含两个连续的下划线,也不能以下划线开头后面紧跟一个大写字幕.
下面说说变量命名的习惯
变量命名有许多被普遍接受的习惯.遵循这些习惯可以提高程序的可读性.
1.变量名一般用小写字母.例如,通常写成index,而不写成Index或INDEX.
2.标识符应使用能帮助记忆的名字.能够提示它在程序中的用法的名字.例如:total_revenue,总收入的意思.
3.包含多个词的标识符书写为在每个词之间添加一个下划线,或者每个内嵌的词的第一个字母都大写.例如:student_loan或studentLoan,而不写成studentloan.
保持命名习惯是很重要的 :)
来看看下面的例子:
int double=3.14159; 错,double是关键字
char _; 可以
bool catch-22;"-"是非法字符,下划线、字母跟数字组成.
char 1_or_2 ='1'; 标识符必须以下划线或者字母开头.不能数字开头
float Float -3.14f; 不要被骗,Float不是关键字,可以的
保存先