一,赋值运算符
1, 赋值运算符是右结合的,a=b=c=10;赋值号两边的部分称为左值与右值,只有变量名才可以做左值,如a++=1,a=b++=c++=2 都市错误的.
2,赋值操作是一种破坏性输入,即不管左边变量原来具有什么样的值,结果都要成为右边表达式的值.
3,赋值运算符中的类型转换:用左边变量的类型去剪裁改造右边的表达式.
1> 由float double 向 int :去掉小数部分,只赋整数部分,不按四舍五入处理.
2> 由int 向 float或double ;全部补零.
3> 由double 向float 在float类型所能容纳的范围内,把double数值的前七位放入float中,超过范围出错.
4> 由 unsigned char 向 int 把字符放入整型变量的低八位.
由char 向 int 把具有符号的字符赋给整型变量,这是,如果字符符号位是0,则整数的高八位全部补0,如字符符号位是1,则高八位全补1,这称为”符号扩展”,目的是为了保证赋值后的数值保持不变.
4,复合的赋值运算符:在普通的赋值运算符前面加上符号.
一个例子: int a= 8;
a+=a-=a*a;
运算步骤:1,a=a-(a*a) 结果 –56;
2,a=a+a;注意这时候a已变为–56,所以 a 最后为 –122;
二,逗号运算符: 逗号作用有两个:分割符,运算符.作为运算符,它把两个对象”连接起来”,使之成为一个逗号表达式 <表达式1>,<表达式2>,<表达式3>~~~<表达式n>;
1,逗号运算符的优先级是最低级的,结合性,从左向右;
2,后面表达式子的计算可以用前面表达式的结果,
3,最后一个表达式的值作为整个表达式的值.
三,sizeof运算符:是一个单目运算,求运算对象所具有的字节数
int i = 162;float y;(本篇中的例子全用伪代码表示)
1> sizeof(++i) = 2; i=162;仅求对象的长度,并不对对象进行求值运算.
2> sizeof(162)=2;int型.
3> sizeof(“china”)=6;加上结束符\0.
4> sizeof(1.1)=8;编译器把浮点型做为double型来处理.
5> sizeof(float)=4,sizeof(double)=8;
6> sizeof(y=2*I+6.0);因为定义的y为float型.
虽然sizeof的使用像是一个函数调用,但它只是个运算符,不是函数,没有函数调用方面的开销.