1.数据类型
//1个字节8个bit位 //bit是最小存储单位
1.字符型--一个字节--用于储存单个字符
char;
2.整形--用于存储整数
short;(短整型)--二字节--
int;(整型)--四字节--%d
long;(长整型)--四字节/八字节--%ld
long long;(更长整型)--八字节--%lld
3.浮点型--存放浮点数
float--四字节--%f
double--八字节--%lf
long double--更多字节
4.布尔类型--专门表示真假
bool;
等等等....
2. 变量与常量 (本质是向内存申请空间)
2.1全局变量与局部变量(*局部优先)
局部变量--“{}”内定义的【变量必须初始化才能使用】
全局变量--“{}”外定义的【整个工程,跨文件可使用】-->不初始化默认为0
2.2常量不可改变
3.printf 与 scanf 函数
3.1 printf:将参数文本输出到屏幕
// “\n”表示自动换行;
“printf”是在标准库的头文件<stdio.h>下定义的,所以使用 printf 时须在源码头部引入该头文件即
#include<stdio.h>
3.2 占位符(这个位置可以用其它值代入)
%c--单个字符(char)
%d--十进制整数
%e--科学计数法的浮点数
%f--浮点数(float)
%g--6个有效数字的浮点数(自动去除无效零),整数部分超过6位会自动转为科学计数法
%lf--(double)
%s--字符串,如“Tom”
%zd--size_t类型
%%--输出一个%
等等....
3.3 输出格式(printf可以定制占位符的输出格式)
3.3.1 限定宽度---限定占位符最小宽度
printf("%5d", 123);//输出为"__123"
//%5d-->宽度至少为5位,若不满则会自动在前面填空格
//若想左对齐--printf("%-5d", 123);
3.3.2 正负号
默认不对正数显示+号,若想显示,则可:
printf("%+d", 12);//输出+12
printf("%+d", -12);//输出-12
3.3.3 限定小数位数(会四舍五入)
小数默认精度为6位,如:
%12f-->"___123.450000"
printf("%12f", 123.45);
小数点后仅保留两位,则可:
printf("num is %.2lf", 1.356);//则会输出1.36
4.输出部分字符串
%s默认全部输出,若只想输出开头部分,可用:%.5s 来指定输出长度, 如:
printf("%.5s\n", "hello, world");
3.4 scanf 函数(传递的是值不是地址)
3.4.1 用法:用于读取用户的键盘输入(它的原型定义在头文件stdio.h中)形如:
scanf("%d%lf%s", &i, &j, &k);
有空格不影响读取;回车分行也不影响读取。
注:解读用户输入时,会从上一次解读遗留的第一个字符开始,直到读完缓存/遇到第一个不符合条件的字符为止(缓存--用户的输入会先放入缓存,按回车后按占位符对缓存进行解读)
int x;
float y;
scanf("%d", &x);
scanf("%f", &y);
//用户输入“___-13.45e12#_0”
//scanf读取用户输入数据时,%d会忽略起首空格,读取到-13为止,因为后面的不属于整数的有效字符
//第二次调用scanf时,会从上一次停止解读的地方 %f--会读到.45e12 ,因为#不属于浮点数会停止
(科学技术法)3.0e3---4.0*10^3;
3.4.2 复制忽略符
要求:输入格式 2020-01-01;
用户输入:2020|01|01;
则不符合会报错,所以为解决该问题则可:
把*加在任何占位符%后面,该站位符就不会返回值,解析后丢弃。如:
1.scanf("%d-%d-%d", &a, &b, &c);
printf("%d-%d-%d", a, b, c);
2.scanf("%d%*c%d%*c%d", &a, &b, &c);//把1换成2即可解决问题
4. strlen与sizeof的区别
1. strlen是一个函数(用于计算字符串长度)从字符串头开始计数,直到遇见 ‘\0’ .需要头文件
<string.h>. 如:strlen(“abc”)的结果为 ‘3’ .
关键是没找到 \0 则会越界
2. sizeof是一个运算符,用于计算变量和数据类型所占用的字节数。同于数组时如:
int arr[10];
int sz = sizeof(arr);//得到的是数组整体所占空间的大小 即:40字节(4*10);
用于指针时根据不同的操作系统为4/8字节;
5. 操作符
5.1 ‘/’ 号俩边有小数才会进行小数除法,不然仅会进行整数除法。
5.2 强制转化
double a = 3.14;
printf("%d", (int)a);//把a由浮点型转化为整型