0.00
about
位运算,数据类型的大小,一些定义时的合法规范,使用时的坑点。
0.关于字节,位的大小,还有数据类型的大小
字 word
字节 byte
位 bit
1字=2字节(1 word = 2 byte)
1字节=8位(1 byte = 8bit)
一个字的字长为16
一个字节的字长是8
1 Byte = 8 Bits
1 KB = 1024 Bytes
1 MB = 1024 KB
1 GB = 1024 MB
1.数据类型
c99中额外补充的数据类型
我们可以简单的使用 _Bool 来定义布尔型变量。_Bool类型长度为1,只能取值范围为0或1。将任意非零值赋值给_Bool类型,都会先转换为1,表示真。将零值赋值给_Bool类型,结果为0,表示假
_Bool flag = 1 ;// 这代表的是true 真
加入头文件 #include
unsigned char height; // 如果没有unsigned,结果就会为负数
height = 170;
printf("%d", height);
2.定义符号常量(宏定义)
3.数据基本类型
4.获取数据类型或表达式的长度
5.signed 和 unsigned
signed 是带符号位的,可以是负数
unsigned 是不带符号位的,只能是正数和0
6.输入和输出
- printf(“%d”) d是可以打印带符号的 (signed)
- printf(“%u”) u 是打印无符号的( unsigned)
7.取值范围
8.关于true和false
c语言中使用1 和 0 来表示 true 和false 的,
1. 补充.实数型数据的存在形式和合法规则(浮点数)
C语言中,实数只采用十进制 , 它有两种形式 : 十进制小数形式和指数形式
- 十进制数形式
由数码0~ 9和小数点组成。 例如:0.0、25.0、5.789、0.13、5.0、300.、-267.8230 等均为合法的实数。
注意,必须有小数点。
2.指数形式
由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为:
a E n(a为十进制数,n为十进制整数)
其值为 a10n。如:
2.1E5 (等于2.1105)
3.7E-2 (等于3.710-2)
0.5E7 (等于0.5107)
-2.8E-2 (等于-2.8*10-2)
以下不是合法的实数:
345 (无小数点)
E7 (阶码标志E之前无数字)
-5 (无阶码标志)
53.-E3 (负号位置不对)
2.7E (无阶码)
2. 合法的标识符和关键字
标识符是用户编程时使用的名字,像变量名称、函数名称、数据类型等都属于标识符。C语言标识符是指用来标识某个实体
的一个符号,在不同的应用环境下有不同的含义,标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成,并且首字符不能是数字
,但可以是字母或者下划线
。
2.2 C语言中合法的标识符有以下这些:
- a
- a1
- Student_1
- b123456a12334_。
2.3C语言中非法的标识符有以下这些:
1a 不能以数字开头
sum%3 %为非法字符
a 为非法字符
&&b 必须以字母或下划线开头且&为非法字符
2.4标识符使用注意事项:
所定义的标识符不能与关键字相同,也不能和用户自定义的函数或C语言库函数同名,否则会出现错误。例如:if、for、while等但If、For、While都是合法的。
标识符长度由编译系统限制,也被操作系统限制。C89标准长度限制是8字符,C99标准扩充长度,大部分工业标准都更长。
标识符严格区分大小写,一般变量名用小写,符号常量命名用大写
标识符是用于标识某个量的符号,因此,命名应尽量便于阅读和理解,作到“顾名思义”。
如果在某个编译器中规定标识符前128位有效,当两个标识符前128位相同时,则被认为是同一个标识符。
3.关于自定义的函数在主函数的前后的差别
自定义函数在主函数之前,可以正常调用,没有差别影响
自定义函数在主函数后面的话,就需要在main函数的前面声明该函数,不然会报错
所谓函数声明,就是在函数尚在未定义的情况下,事先将该函数的有关信息通知编译系统,相当于告诉编译器,函数在后面定义,以便使编译能正常进行。
int sum(int a,int b) ; 做一个函数声明,并不用实现,告诉
int main()
{
...
}
int sum(int a, int b)
{
}
4.位操作
4.1逻辑位运算符
只作用于整形数据的
例如:
demo = ..
demo &= ..
4.2左移位运算符,左移是乘2
4.3右移位运算符,右移是除2
4.4和赋值号结合
value <<= 1;
value == value << 1 ;