前言
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
1.数据类型
- C是一个有类型的语言,使用之前必须事先定义


- 其中浮点类型的数据输出是%f,输入是%lf
- 整数类型在内存中表达形式是二进制(负数是补码),浮点类型的是以编码形式存储意味着(在二进制层面)不可直接拿来运算
- sizeof是用来求某个类型或者变量所占的字节数,sizeof是静态运算符(不可在括号内做运算)只会看括号里结果是什么类型,占据多少字节(8bit)
- devcpp中 char-1 short-2 int-4 long-4 long long-8,其中int (一般是和计算机的寄存器位数一样)和long是和计算机以及编译器有关
- 负数在计算机中二进制以补码的形式存在,补码如何求:每一位取反后加1。


- 数的范围关键在于我们怎么看,一个字节类型的变量当作纯二进制(8个1为255);当作整数类型就是(8个1=-12)
- 不同类型的变量可以表示的整数范围如下

- int在4个字节时可以表示的整数范围是(-2^31)~(2^31)-1
- 计算机内部1111 1111的8个1,当作纯二进制255;一个字节(8bit)的整数=-1;
- 如果对于int或者char或者short之前加unsigned表示该类型不表示整数的负数部分,表示纯整数,数值上和纯二进制数一样;eg:unsigned char(0000 0000-1111 1111)表示0-255
- 整数计算有一个有意思的部分,整数用(含补码)的形式表示后,计算是以二进制方式进行的,

- char:逆时针走是+1,顺时针走是-1

- unsigned char(0-255)

- 如果输出类型是unsigned int/char输出%u
- 对于小于int字长的类型的变量,printf会提到int类型输出,在计算机内部都是一样的表示方法,但用正确的规则输出想要的值才是关键
- 以0开头-8进制,0x开头是16进制


2.浮点数的类型

- 上面给的范围就是在0的左右正负区间有一个很小的范围是浮点无法表述的,有效数字就是多少位是准确的

- %e是科学计数法输出
、- 浮点数可以在%和f直接(.数字)表示输出多少位小数,但是这个时候会做四舍五入
- 浮点可以表示inf(无穷大1.0/0.0;nan(不存在,0.0/0.0);但整数1/0;0/0不可以
- 浮点数没有精度,float算上小数点前面的和后面的共7位有效,也就是输入a=0.2,b=0.3,但计算机内部输出a+b可能就不是0.5
- 默认输入0.2561为double类型,如果加f:0.2568f为float类型的,
- 浮点数判断是否相等
fabs绝对值 - 浮点数在计算机内部是不精准的,那么要么乘10的多少次方转化为整数;要么用bcd来做运算(以4位二进制表示一位十进制数)(计算器中使用)

- 硬件部分对浮点数的编码解码然后计算后再次编码换成小数

- 选取规则,没有特殊需要整数选int,小数选择double
3.字符类型变量
- char既可以作文整数类型变量,也可以用作存储字符的字符型变量;存数字就表示数字,存字符就表示字符。'a' '1' ' ' 单引号内放什么都是字符,内部就看作一个字符,输出使用%c
- char c=1; char d='1';第一个c=1,第二个printf("%c",d);输出是

- scanf只能读入整数类型的变量
输入数字49,在计算机内部表示字符就是'1',数字就是49(ASCⅡ码)- scanf("%d %c",&a,&b);和scanf("%d%c",&a,&b)是不一样的,第一个数字和字符之间可以有任意空格;第二个是读到整数为止赋值给整数变量,后面的那个赋值给后面的变量
- 逃逸字符:

- ①\b回退一格代表输入的光标回退一格,如果不接着输出就不会被覆盖,如果后面跟着有输出就会从前面一个光标开始被覆盖
- ②\t类似于tab键光标移动到固定的每一行的位置
4.类型转换


- scanf中读取char字符类型可以%c;如果整数类型char,必须读给int后送给char

- 强制类型转换就是把一个数二进制的长度转化成需要的类型的二进制的长度位,其余截取扔掉

总结
1,数值在计算机内部都是以二进制形式存储,具体值为多少关键在于我们怎么看
2.整数越界问题需要好好看
3.浮点数是没有精度的,小数点前数字二进制形式,小数点后二进制形式,并且float和double都在0的左右存在小区间内不可表示,只有浮点数有inf(无穷)nan(不存在)
4.char既可以看作整数也可以看作字符类型
5.对于变量选择如果没有特殊要求整数int 浮点double