目录
数据类
char 字符数据类型
short 短整型
int 整型
long 长整型
long long 更长的整型
float 单精度浮点数
double 双精度浮点数
#include<stdio.h>
int main(void)
{
//字符类型
char ch = 'a';
//整型
int age = 20;
//短整型
short num =10;
//long
//long long
//单精度浮点型
float weight = 55.5;
//双精度浮点型
double = 0.0;
printf("%d\n",100); //打印一个整数——%d
printf("%d\n",sizeof(char));
printf("%d\n",sizeof(short));
return 0;
}
sizeof 是关键字也是操作符 用来计算类型或者变量所占空间的大小
C语言标准: sizeof(long) >= sizeof(int)
sizeof 的单位是什么?——字节 byte
计算机中的单位:
bit ——比特位 一个比特位是存放一个二进制位的
byte—— 字节 = 8 bit
kb = 1024 byte
mb = 1024 kb
gb = 1024 mb
变量 —— 能被改变的量
#include<stdio.h>
int main(void)
{
//创建一个变量
int age = 20;
// int 是变量的类型 age是变量的名字 = 20; 把20赋值给变量age
//类型 变量的名字; (不赋值,可以这样写,但是不推荐)
double weight = 60.5;
age = age + 1;
weight = weight - 10;
printf("%d\n", age); // %d —— 整型
printf("%lf\n", weight); // %f —— float %lf —— double
return 0;
}
%d —— 整型
%f —— float
%Lf —— double
#include<stdio.h>
// 全局变量-{}外部定义的
int a = 120;
int main(void)
{
// 局部变量-{}内部定义的
int a = 100;
printf("%d\n", a); // 输出结果为100
return 0;
}
当局部变量和全局变量名字冲突的情况下,局部优先,不建议把全局变量和局部变量的名字写成一样的
写个代码求2个整数的和
#include<stdio.h>
int main(void)
{
int a = 0;
int b = 0;
int sum = 0;
scanf("%d %d", &a, &b); // scanf函数是输入函数
sum = a + b;
printf("sum = %d\n", sum);
return 0;
}
使用了 scanf()函数会报错,不管是2013版本还是2019版本,都会报错,解决办法1:源文件的第一行,加上:#define _CRT_SECURE_NO_WARNINGS 1
为了以后不用每次都要输入#define _CRT_SECURE_NO_WARNINGS 1 可将其保存到装机文件newc++file.cpp里:找到newc++file.cpp以记事本方式打开,把#define _CRT_SECURE_NO_WARNINGS 1 放进去,保存,以后每次新建源文件,它都会默认在第一行
不建议使用scanf_s()函数,这个函数是VS编译器提供的,不是C语言标准提供的,不可移植
变量的作用域(通俗讲就是哪里起作用,哪里就是它的作用域)
局部变量的作用域:就是变量所在的局部范围
全局变量的作用域:整个工程 (在源文件A.c里定义的变量g_val,源文件B.c一样可以调用,只需在B.c的main函数前声明一下变量:extern int g_val )
变量的生命周期:变量的创建和销毁之间的时间段
局部变量的生命周期:进入局部范围生命开始,出局部范围生命结束
全局变量的生命周期:程序的生命周期
#include<stdio.h>
//变量的作用域和生命周期(通俗讲就是哪里起作用,哪里就是它的作用域)
//局部变量的作用域:就是变量所在的局部范围
//全局变量的作用域:整个工程
int g_val = 2021; //全局变量
int main(void)
{
printf("1:%d\n", g_val); //输出 1:2021
printf("hehe\n");
{
printf("2:%d\n", g_val); //输出 2:2021
int a = 10; //局部变量
printf("a = %d\n",a); //输出 a = 10 (如果把int a = 10; 写在它下面一行 会报错)
}
printf("3:%d\n", g_val); //输出 3:2021
return 0;
}
常量 —— 不能改变的量
- 字面常量
- const 修饰的常变量
- #define 定义的标识符常量
- 枚举常量(enum)
#include<stdio.h>
int main(void)
{
//1.字面常量
3.14; //浮点数常量
10; //整数常量
'a'; //字符常量
"abcdef"; //字符串常量
//2.const修饰的常变量(本质是变量)
int num = 10; //此时num是变量
num = 20;
printf("num = %d\n", num); // 输出20
return 0;
}
#include<stdio.h>
int main(void)
{
//2.const修饰的常变量(本质是变量)
const int num = 10; //此时num是常变量 —— 具有常属性(不能被改变的属性)
num = 20;
printf("num = %d\n", num); //会报错 num被const修饰 已经不能改了
return 0;
}
//3.#define定义的标识符常量
#include<stdio.h>
int main(void)
{
#define max 100 //max 是define出来的 这一行也可放在上面{}外面
int n = max; //max 是不能改的
printf("n = %d\n", n); //输出 n = 100
return 0;
}
//4.枚举常量 —— 可以一一列举的常量
#include<stdio.h>
//比如枚举性别
enum Sex
{
//这是枚举类型的变量的未来可能取值
//枚举常量
male,
female,
secret
};
int main(void)
{
enum Sex s = male; //此处只能把male female secret三个中的一个赋值给s
printf("%d\n", male); //输出 0
printf("%d\n", female); //输出 1
printf("%d\n", secret); //输出 2
return 0;
}