-
sizeof 运算符
基本类型所占内存大小:(Byte 字节)
1 Byte(字节) = 8 Bit(位)sizeof(char) = 1 Byte
sizeof(short) = 2 Byte
sizeof(int) = 4 Byte
sizeof(long) = 8 Byte //32 Bit OS 下大小为 4 Byte
sizeof(float) = 4 Byte
sizeof(double) = 8 Bytesizeof 是运算符,不是函数
char cNum = ‘3’;
//以下两种写法均为正确写法
printf(“sizeof cNum = %ld ”, sizeof cNum);
printf(“sizeof(cNum)= %ld ”, sizeof(cNum));sizeof int
-
类型转换
int a = 3.98; //隐式类型转化
printf(“a = %d ”, a); //a = ??a. 隐式类型转换
当赋值号两侧数据类型不一致时,默认将右侧数据转化为左侧类型;
b. 显示类型转换(强制类型转换)
在需要转换的数据之气,加上需要转化的数据类型
int a = (int)3.45679;float fNum = 3.1415926f;
int iNum = (int)fNum;问:
fNum = 3.141593
iNum = 3强制类型转化并不改变变量的原有数据类型,只是做一次临时转化!!!
转化顺序:有低精度向高精度转化
char/short —> int —> long —> flaot —> double -
算术运算符
加(+)减(-)乘(*)除(/)
取余运算(求模运算 %)
m%n: m 对 n 求余整数相除结果仍为整数!
% 运算的两个操作数必须为整数!!!3 % 2 = ?
自增/自减运算符:
++ –
int i = 3;i++:先取值,后自增
int num = i++;num = i; //3
i = i + 1; //4++i:先自增,后取值
int ret = ++i;i = i + 1; //4
ret = i; //4i–:先取值,后自减
int num = i–;num = i;
i = i - 1;–i:先自减,后取值
int ret = --i;i = i - 1;
ret = i; -
关系运算符
大于(>) 大于等于(>=)
小于 (<) 小于等于(<=)
等于(==) 不等于(!=)运算结果:为真(1,true)或者为假(0,false)
使用形式:
表达式1 关系运算符 表达式2;
若成立,则结果为 1,否则为 0int a = 12;
int b = 10;
int c = 55;int ret1 = 15 > a > 5;
int ret2 = a < b < c;(1) 合法与否?
合法表达式
(2) 若合法,结果为多少?
ret1 = 0;
ret2 = 1;
不合法,说明原因? (不考虑)
(3) 考虑 a 的值是否会影响 ret1 的值???
不管 a 的值是多少,其最终结果都为 0
15 > a 其结果不是为 1,就是为 0
不管是 1 还是 0 ,均小于 5 -
逻辑运算符
逻辑与:&&
使用形式:
表达式1 && 表达式2;表达式1 和 表达式2 均为真,则整体结果为真,否则为假;
即 && 两侧的表达式同时成立,则整体表达式才为真(1)逻辑或:||
使用形式:
表达式1 || 表达式2;表达式1 或者 表达式2 成立,则整体表达式成立
即表达式1 和 表达式2 都不成立,整体结果才为 假(0)逻辑非:!
!表达式;表达式为真,则结果为假,
表达式为假,则结果为真。 -
条件运算符
三目运算符 ?:使用形式:
表达式1 ? 表达式2 : 表达式3;若表达式1 成立,则计算表达式2 的值,作为结果
若表达式1 不成立,则计算表达式3 的值,作为结果a > b ? 1 : 0;
思考:
任意输入两个数,如何获取两数中的最大值??int max = (a > b ? a : b);
-
逗号运算符
,12,23,34,45
逗号表达式,取最后一个表达式或者值,作为最终结果
int a = 2;
int b = 4;int ret = (a + 2, a++, b + 2, a + b);
ret = 7 -
位运算符
只针对于整数或字符型数据与:&
对应位都为1 则结果为 1,否则为 0
任何数与 0 相与,结果仍然为 03 & 4 = 0
0011
&0100
---------
000012 & 7 = 4
1100
&0111
-------
0100
或:|
对应位只要有 1,则结果为 1,否则为 04 | 3 = 7
0100
|0011
------
011113 | 9 = 13
1101
|1001
-------
1101任何数与 1 相或,结果仍为 1
取反:~
对应位若为 1, 则结果为 0,
对应为若为 0, 则结果为 1原码:
补码:
反码:异或:^
左移:<<
右移:>>