一、内建函数

比较常用的函数在编译器中直接设置过了如:printf、sysytem("pause")

没有设置过的函数不能直接使用

是编译器厂商的一种优化,目的是增加编译效率,但是尽量头文件写上,不要使用这种方式进行编译

二、数据类型

1、基本数据类型,相同的数据类型在不同的系统上的大小可能不一样

(1)整型(int,short,long,long long):整型就是整数

格式化输出符号:%d(十进制)、%o(八进制)、%x(十六进制)(十六进制用大写X时输出的是大写字母,小写的x输出为小写字母)

数据没有声明时默认为十进制int型整数

int(整型) 范围(-231~231-1)(4字节)

无符号整型:unsigned int (0~232-1)(4字节)(与int一样大)(%ud)

short (短整型)(-215~215-1)(2字节)(不大于int)(%hd)

long  (长整型)(-231~231-1)(4字节)(不小于int)(%ld)

long long(c99的新标准)(-263~263-1)(8字节)(%lld)

(2)浮点型(数学中的小数)

float(默认打印6位小数)(4字节)%f 6位有效

double(8字节)   %lf  15位有效

long double (不小于double)  %lf(必须进行初始化,会出现异常)

科学计数法 %e(可以输出任意数字)

浮点型后缀

正常小数默认为double类型的数,直接赋值到float类型的变量中会发生截断,在小数后加一个后缀就可以转化为相应类型的数据

float f=12.12f;//没有f会发生截断,f或者F都可以
long double=12.12L;//long double类型用l或者

浮点型的内存存储

float

最高位是符号存储:0是正数,1是负数

8位指数位

23位有效数位

double:1个符号位,11个指数位,52位有效数位

注意

使用浮点型时要赋值0.0,不要赋值0,会有微小的差异

有效数位:从前到后的数字精度,有效精度的后的数字不一定准确,具体的有效数位要看编译器规定

所有浮点型下数都默认输出到小数点后6位,在格式化输出符号%后可以调整输出的位数等信息

%5.2f   //表示一共输出5位数字(包含小数点),前面不够用空格补上,小数点后输出2位,被舍弃的位数会四舍五入。如果在5前加一个负号就是左对齐,不加就是右对齐

(3)字符型

2、构造类型

(1)数组

(2)结构体

(3)联合

(4)枚举

3、指针%p

4、数据类型的使用

声明

int a=123;

变量名尽量用英文,字母个数不限制

变量要跟变量的类型对应

赋值

int a,b;
a=10;//常量给变量赋值
a=b;//变量给变量赋值

赋值只能给变量赋值

得到类型的大小:  sizeof()返回数据类型的字节数,是int类型的值

地址

每个变量对应的内存空间叫做地址

取地址预算符&(地址默认16进制表示)

print("%p"&a);  //以%形式输出地址    (输出结果为0014ff20)
print("%#p"&a); //以%#形式输出带前缀的地址(输出结果为0x0014ff20)

三、变量的输入

scanf()引号里是格式化输出符号,引号外是引号内符号变量对应的地址(不加取地址符不会报错,但运行时出现崩溃)

不要在引号里加入\n,会导致无法结束输入

#include <stdio.h>
int main(void)
{
int a=12;
int b=34;

scanf("%d",&a);//输入单个变量后按回车,程序继续运行
scanf("%d%d",&a,&b);//输入多个变量时默认使用空格将变量分开
scanf("%d,%d",&a,&b);//在设计时使用什么符号隔开,在输入时就要使用什么符号分开

return 0;
}

四、运算符

1、赋值:=

左侧必须是变量,右侧可以是变量也可以是常量,必须与变量的类型相同

连续赋值:

a=b=c=12;//从右到左进行赋值,先c赋值为13,再b赋值为c...,常量只能出现在最右边

注:当左右数据类型不同时,可能会产生内存截断等问题

2、加、减、乘、除、取余(+ - * / %)

符号两边都可以是变量或者是常量

输出

b=a+14+16+10;//先进行运算再进行赋值

注:整型除法结果只保留整数,只能对整型取余

运算顺序是有括号()时先计算括号里的,大多与数学中一致(去查c语言运算符优先级表)

计算机只能对同种类型的数据进行运算,不同类型混合运算,系统要先进行转换,才能计算。类型转换,可能造成内存截断,使结果产生错误,或者出现我们不想要的结果

自增自减(变量加或者减1)

自增自减符号在变量前还是变量后的运算过程不一样

在变量前时,变量先进行语句的计算,最后进行自增自减

在变量后时,变量先进行自增自减的计算,最后运行运算语句

int a=12;
int b=12;

int c=a++;//a的值为13,c的值为12
int d=++b;//b的值为13,d的值为13

注:同一个变量的自增自减不能同时出现在一个语句中,不同的编译器得到的结果不同

复合赋值运算符

a+=1;//与a=a+1相同
a-=1;
a*=1;
a/=1;