赋值运算符(自右至左结合顺序)
“=“
二(元)目运算符可以和赋值符可组成复合赋值符。
“+=,-=,*=,/=,%=,&=,|=,<<= , >>=, ^=“
为了简化程序,使程序精炼;为了提高编译效率,产生高质量的目标代码。
2. 赋值表达式
变量 = 表达式;
左值不能为表达式、常量(不能被赋值)等。左值可以作为右值。
a = (b=5); a = b = 5;
赋值表达式为表达式中的一种,故赋值操作不仅可以出现在赋值语句,还可以以表达式形式出现在输出语句、循环语句等。如:cout << (a = b); 此处要用括号括起来
3. 赋值过程中的类型转换:
不同类型的整型数据间的赋值归根到底就是一条:
按存储单元中的存储形式直接传送。
浮点型数据赋给整型变量时,舍弃小数部分,在内存中以整数形式存储。整型数据赋给浮点型时数值不变,以双/单精度指数形式存储到变量中。double类型数据赋给float变量时,注意数值范围不要溢出。字符型数据以ASCII码赋给整型变量。整型变量赋给字符型时,会截断保留低八位。signed型数据赋给unsighed型变量signed是以补码形式存储,而unsigned数值无符号,全部二进制(原码)用来表示数据本身,故直接将存储单元内容照搬
例如:short int a = -1;(负数需要转换,整数的原码反码补码一致)
则 a为 1000 0001 -> 1111 1110 + 1 = 1111 1111
unsigned short b = a;
则 b中存储的是原码 1111 1111 65535
逗号运算符和逗号表达式C++提供的一种特殊的运算符,又称顺序求值运算符。
将多个表达式“串联”起来,从左至右求解各个表达式的值,最终结果在最后一个表达式。
3+5,6+8 --> 14
a = 3*5,a*4 --> 60 赋值符优先级高于逗号运算符
C和C++之所以语言表达能力强,其中一个重要方面在于它的表达式丰富,运算符功能强,因而使用灵活,适应性强。