一 数据类型
内置类型
1.整型类型(整数):
(1、2、3、4.......)
short int=short(短整型)、int(整型)、long int=long(长整型)、long long int=long long(更长整型)
2.浮点型类型(小数):
(0.2、1.2、1.0 .....)
float(单精度)、double(双精度)、long double(精度更长)
float weight = 30.1;//默认double类型
float weight = 30.1f;//加f变为float类型
3.字符型:
('a'、'A')
char
4.布尔类型:
(变量的取值:true(1)或false(0) )
bool(_Bool)

5.数据类型长度
(1字节=8bit)
可用printf("%zd",sizeo(数据类型));计算数据类型长度(字节)
char = 1
bool = 1
short = 2
int = 4
long = 4
long long = 8
float = 4
double = 8
long double = 8
sizeof操作符
可以用于计算操作符数的类型长度,单位是字节。
使用:
1 sizeof (类型)
2 sizeof 表达式
sizeof的返回值打印需要用到%zd打印
自定义类型(后续介绍)
数组
结构体 struct
枚举 enum
联合体 union
二 signed和unsigned
1.signed:有符号的
温度、海拔
2.unsigned:无符号的
身高、体重
注:(1)int、short默认带正负符号
(2)使用unsigned可使同样长度的内存的最大值增大一倍如short int(signed short int)的取值范围:-32768~32768,unsigned short int的取值范围:0~65536
三 变量
1.创建变量:
数据类型+变量名
int a;
float b;
char ch;
......
2.变量的分类:
(1)全局变量:大括号外面
int a = 100;
int main()
{
int b = 10;
return 0;
}
可在整个工程里使用
(2)局部变量:大括号里面
int a = 100;
int main()
{
int b = 10;
return 0;
}
只能在自己所在的局部范围内使用
注:当全局与局部重名时--->局部优先(尽量避免)

3.变量储存位置:
内存的三个区域:栈区、堆区、静态区
栈区:局部变量,函数参数
堆区:动态内存管理malloc、calloc、realloc、free
静态区:全局变量,静态变量
四 算数运算符
算数操作符(双目操作符)
(1)+ 加法

(2)- 减法
(3)* 乘法
(4)/ 除法
注意 “ / ”两端都为整数,结果为整数如6/4=1(整除后的商)
两端有小数,结果为小数 6.0/4=1.5
(5)% 取余(只能用于整数运算)
获得整除后的余数

负数求模结果取决于第一个运算数的正负号决定
五 赋值
1.操作符 “=”
int a = 0;初始化
a = 10;赋值
2.连续赋值
从右到左

3.复合赋值
+=、-=、*=、/=、%=
例 a = a+3 等于a += 3
六 单目操作符:
++:
自增1:a++ 等于 a++ 等于 a=a+1 等于 a+=1
前置(++a):先加1 后使用

后置(a++):先使用 后加1

--:
自减1:与++相反且同理
+(正)
int a= +5
printf("%d",a) //5
-(负)
int a = -5
int b = -a
printf("%d",a) // -5
printf("%d",b) // 5
七 强制类型转换
在括号里加希望转化的类型:“(类型)”
例:
int a =(int)3.14;
//a为整形,3.14为double类型,加(int)强制转换使a = 3
八 scanf、printf
printf
将数据输出到屏幕上
基本用法: printf(" ");
例:
printf("hello world");———>hello world
可搭配
例:
printf("hello\nworld\n"); ———> hello
//换行 world
占位符
这个位置可用其他值代入
例:
常用占位符
· %d:十进值整数(有符号的10进制整数)
· %数字d:规定了输出整数所占列数,且右对齐,其余列为空格
· %0数字d:在输出所占数列中左侧必须顶满,整数位数不够时左侧补0
· %-数字d:左对齐,其余空格

· %ld:输出长整型
· %lld:输出双长整型
· %hd:十进制short int类型
· %hu:unsigned short 类型
· %lu:unsigned long int类型
· %f:浮点型
· %c:字符
· %s:字符串
输入文本可使用多个占位符
例:printf("%f%d%c",a,b,c);
scanf
可给变量中输入值
基本用法scanf("%d%d",&a,&b);//&取地址符,不能忘!!!
(输入时需用空格隔开“1 2 33 4”)
注意:数组名属于地址,不用加“ & ”
int main()
{
char arr[5];//数组
scanf("%s",arr);//数组名是地址
return 0;
}
scanf返回值
scanf()的返回值是一个整数,表示成功读取的变量个数
注意:若没有读取任何项,或匹配失败,则返回0。
占位符
与printf()占位符基本一致
%c:字符
%d:int
%f:float
%lf:double
%Lf:long double
%s:字符串
scanf在读取%s类型时,自动在结尾放入\0
%[ ]:在方括号中指定一组匹配的字符(比如 %[0-9]),遇到不在集合之中的字符,匹配格会停止。
上面所有占位符之中,除了%c以外,都会自动忽略起首的空白字符。%c不忽略空白字符,总是返回当前第一个字符,无论该字符是否为空格,
如:用%d读取“ 1”,会读取“1”
用%c读取“ 1”,会读取“ ”(空格)
所以%s在读取字符数组时会在遇到空格时,会停止读取
改进:使"%[^\n]s",意思是遇到回车才停止读取
赋值忽略符
%*:该占位符不会返回值,解析后被丢弃
用法:%*c %*d等
scanf不安全报错:
解决1:vs编译环境需用scanf_s代替scanf(不建议)
解决2:在.c文件的第一行加入#define _CRT_SECURE_NO_WARNINGS 1
例:

1万+

被折叠的 条评论
为什么被折叠?



