- 存储形式
内存的最小单位是字节;
sizeof(): 单目运算符,用来计算操作数在内存中占据的字节数,其操作数既可以是括在圆括号中的类型标示符,其返回值为无符号整数
原码 反码 补码
0 0000 0000 0000 0000 0000 0000
-0 1000 0000 1111 1111 0000 0000
一个字节表示的最大范围:
原码 : 1111 1111~0111 1111 -127~127
反码: 1000 0000~0111 1111 -127~127
补码: 1000 0000~0111 1111 **-128~127**
*其中,1000 0000 的反码为1111 1111 原码为1000 0000表示 128*
char: 有符号的 -128~127
unsigned char : 无符号的 0~255 都能表示256个数
字符‘1’和整数1是不同的概念
字符1,占1个字节 00110001
整数1 占四个字节 0x0001
把字符1变成数字1:直接使用字符1减去字符0即可,如:’1’-‘0’
- 操作数、运算符和表达式
求余:左操作数是正的,求余得到正数,如
3/(-5)=0...3
5/(-3)=-1...2
-3/5 = 0...-3
-5/3=-1...-2
自增运算为右结合性
*p++:自增的优先级高于取内容
括号成员第一 //括号运算符[] () 成员运算.->
全体单目第二;//所有的单目运算符 + - ,++ -- * & !
乘除余三,加减四;
移位五,关系六;//移位<< >> 关系:> < >= <=
等于与不等于排第七;==和!=
位与 异或 和 位或 三分天下八九十;;;这几个都是位运算
逻辑或根与 十二和十一;//逻辑运算:|| 和 &&
条件高于赋值;//三目运算符
备注:*= -= += /=都是赋值运算符
例:x = y + 8;//乘等优先级低于+ 等价于 x = x (y+8)
x=y=z=5;//赋值运算符的右结合性
a=12;
a+=a-=a*a;//乘号优先级最高,然后右结合性
即a = a + ( a = a- a*a): a=a+a = -132-132;
a = 2;
a%= 4-1; //a = a%(4-1);
a+=a*=a-=a*=3;//右结合
条件运算–自左到右
int a = 5,b=6,c=7,d=8;
a>b?a:c>d?c:d 等价于 >b?a:(c>d?c:d) 结果为8
类型转换:隐式:小字节转到大字节