c语言笔记——运算符

来源:互联网 发布:药品数据查询 编辑:程序博客网 时间:2024/05/17 23:11

一.移位运算
左移<<
右移>>

例题:将short类型数据的高、低字节互换
代码:

short a=0xf245,b,c;b = a>>8;//右移8位,将前8个高位移到 后八个低位 ,高8位补1 c = a<<8;//左移8位,将后8个高位移到 前八个低位b = b&0x00ff;//将b的高8位清0a = b+c;printf("b=%x\n",b) ;printf("c=%x\n",c) ;printf("a=%x",a) ;

结果:
b=f2
c=4500
a=45f2

思路:分别将a的高8位和低8位保存在b,c中,b,c中的其余个位为0,然后a = b+c;

分析:
a右移8位得到b,b中保存a的之前的高八位,但是由于a是有符号浮点数,并且二进制表达形式可以看出,符号为1,故b的高8位全部都补1。所有这个时候右移得到的b的值其实为:0xfff2
要想通过b+c得到a,必须将b的高8位变成0,所以b = b & 0x00ff;就可以使得b的高8位清0;
这两句话可以缩减成一句话:
c = (unsigned)a>>8;
a左移8位得到c,c中保存a的之前的低八位,c的低8位补0即可。

二.逗号运算符
逗号运算符的值:最后一个表达式的值
如:
a=4,b=a+5,b++的值为9

三.sizeof
1.定义:能获取变量和数据类型所占内存大小(字节数)的运算符

2.格式:
sizeof 表达式
sizeof (数据类型名或表达式)

3.结果(int型)

sizeof(基本数据类型)
sizeof(char) 1
sizeof(int) 2
sizeof(float) 4
sizeof(double) 8

sizeof(指针类型)
都是8

sizeof(数组)
是数组的总字节数

sizeof(字符串或者数值)
例如: sizeof(8) = 4; //自动转化为int类型
sizeof(8.8) = 8; //自动转化为double类型,注意,不是float
sizeof(“ab”) = 3 //自动转化为数组类型,
//长度是4,不是3,因为加上了最后的’\0’符
//有资料说,会自动转化为指针类型(Linux为4)
//可能和操作系统与编译器有关系

sizeof(联合体)
当操作数是联合类型时,sizeof是其最大字节成员的字节数。

0 0
原创粉丝点击