前言
本部分可以说涵盖c语言础部分各个方位知识点,同时加上做题时相关知识点。
有的知识点部分一笔概过,对于本人容易出错的地方会着重讲解。
读者遇到不懂的知识点可以去查找相关资料
1、数据类型分类
2、基本类型分类
2.1、整形
比如0,-12,255,1,32767等等这些都是整型数据。
整型数据中是不允许出现小数点和其它特殊符号的。
int a;
a=1.2;//实质a为1
printf(“%d”,a)//输出1
即,给整形赋值浮点型,整形只会保留整数部分
2.1.1、有符号数和无符号数
对于有符号数,以最高位(左边第一位)作为符号位,
最高位是0表示的数据是正数,最高位是1表示的数据是负数
整数10二进制形式: 0 0 0 0 1 0 1 0
整数-10二进制形式: 1 0 0 0 1 0 1 0
对于无符号整数,因为表述的都是非负数,一个字节中的8位全部用来存储数据,不再设置符号位
整数10二进制形式: 0 0 0 0 1 0 1 0
整数138二进制形式: 1 0 0 0 1 0 1 0
2.1.2、变量溢出
对于有符号的char变量,127加上1等于多少?-128减去1又等于多少?
对于无符号的char变量,255加1等于多少?0减去1等于多少?
把一个有符号的-16赋给一个无符号的char变量又等于多少?
把129赋给有符号的char变量又等于多少?
如果你非常清楚,下面的这部分你就不要看了;
如果你不清楚,恭喜你,读完下面的内容将彻底明白。
首先,要明白无符号和有符号的表示。
无符号8位全部表示数,所以能表示2的8次方个数256(0-255);
有符号的字符,第一个位表示符号位0表示正,1表示负所以只有7位表示数,所以按道理正数和负数各能表示2的7次方个数(128个),共能表示256个数,但是负数和正数的表示方法不同,正数:最高位为0,剩下7位是多少就是多少,如01101110 实际就是1101110=206;而负数:最高位为1,剩下取反加1,如11101110所以是是-0010010=-18,这么一来1000 0000 和 0000 0000这两个就不是一个意思了:前者先取出表示数的(符号位不管)低7位000 0000取反后111 1111,加上1后1000 0000,实际上表示的是这是一个负数,负数的绝对值大小为1000 0000即128,所以表示-128,所以,以0开头的可以表示0到+127这128个数,一1开头的表示-1到-128这128个数,而加法、减法的本质都是一样,就是在原来的码上加个1,11101110(-18ÿ