scanf double 必须是%lf
关于指针
有两种(1)
int b=2;
int *p=b;
p=&b;
printf("%d\n", *p);//输出2
(2)
int b=2;
int *p=&b;//此时p取到的还是b的地址,指针变量*p的值是变量b的值
printf("%d\n", *p);//输出2
空间分配
栈区:int a ;系统自动分配空间,使用后自动消除
堆区:float *pfloat=(float *)maloc(size);
运算符与表达式
运算符:为了构成表达式+、-、*、/等
表达式:2+5 5*8 30 有操作数操作符构成,甚至可以是一个单一的值
运算符分类:
1、算术运算符(加、减、乘、除、取余)
9/4 取得9里面4的个数
注意:有一个是浮点类型数,结果就是float型
不能用浮点数做取余操作
2、自增自减运算符(++、- -)a=i++;<=>a=i;i=i+1;//注意语句执行顺序
包含两种形式(1)前置++i、- -i 先执行++指令,后使用变量
(2)后置i++、i- - 先使用变量,后执行++指令
3、赋值运算符=
等号右边赋值给左边
4、二元符合运算符(在=前面添加算术运算符)
+=、-=、\=、%=
5、操作符sizeof//用于计算数据类型在内存中占用空间的大小
printf(“%ld,%ld,%ld\n",sizeof(int),sizeof(a),sizeof(3.14)); //3.14默认为double型
注意:sizeof()是操作符(运算符),不是函数
6、bool数据类型:true false
0 is false—0为假
Everything else is true —非0为真
纯数据表示 false:0 true:1
#include "stdbool.h”//注意加上表头文件
7、逻辑运算符与、或、非
&&、||、!//根据左右两边bool值来获取真实表达式bool的值
注意:&&前面为false,后边自动忽略,不再判断
|| 前面为true,后边也是自动互留
8、关系运算符
if (true){
…
} else …
三目运算符 :max1 = a > b ? a : b ;//如果为true max=a;如果为false max=b;
//逗号运算符
int dn1=10;
int dn2=20;
int dn3=(dn1,dn2);//有括号取dn2
int dn4;
dn4=dn1,dn2;//没有括号取dn1
显式类型转换转换与隐式类型转换(默认转换)
int n=100;
float i=(float)n;
隐式转换
float f1=3.9;
int i1=f1;//不存在四舍五入