C中的运算符与表达式(二)

类别:编程语言 点击:0 评论:0 推荐:

一,赋值运算符

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的使用像是一个函数调用,但它只是个运算符,不是函数,没有函数调用方面的开销.

 

本文地址:http://com.8s8s.com/it/it27551.htm