目录
数据类型
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
printf("%d\n", sizeof(long double));
return 0;
}
变量
变量分为局部变量和全局变量
#include <stdio.h>
int num = 10;//全局变量
int main()
{
printf("num = %d\n", num);
{
int num = 1;//局部变量
printf("num = %d\n", num);
}
printf("num = %d\n", num);
return 0;
}
运行结果
上面的程序第一次、第三次我们都输出了num=10,而第二次我们输出的是num=1
从这里我们可以发现
全局变量:在整个程序内部均有效
局部变量:仅在其作用域范围内有效(可以理解为其仅在其所在的{ }内部有效)
生命周期:变量的创建到变量的销毁之间的一个时间段
如何创建变量
int age = 150;
float weight = 45.5f;
char ch = 'w';
以上是一些例子
我们可以看出创建变量的格式为:
数据类型 变量名(自己定义)= 初始值(创建时暂时不赋值也可以,但不建议这不是好习惯)
创建变量的本质是在内存中开辟一片空间,用来存放数据(由此我们也可以知道为什么不同的数据类型大小会有所不同,因为它们申请的空间是不同的)
常量
1字面常量
#include <stdio.h>
int main()
{
"hello world!";//
10;//这就是两个字面常量
}
直接写出的就是字面常量
2const修饰的常量
#include<stdio.h>
int main()
{
//常属性
//这里的a是具有常属性的,不能改变,但是本质上还是变量
const int a = 3;
printf("%d\n", a);
a = 10;
printf("%d\n", a);
//数组
const int n = 10;
int arr[n];
return 0;
}
可以看到第10行a报错显示:表达式必须是可修改的左值,这说明const修饰的常量具有常属性
再看第15行数组arr[n]报错显示:表达式必须含有常量值,应输入常量表达式,这说明const修饰的变量并不是真正的常量
综上,const修饰的常量本质上是具有常属性的变量(在C++中可以直接当成常量,不会报错)
3#define 定义的标识符常量
#include<stdio.h>
#define SIZE 10
#define MAX 10000
#define CH 'W'
int main()
{
int a = SIZE;
int arr1[10]={0};
int arr2[SIZE] = {0};
printf("%c", CH);
return 0;
}
从上面的代码可以发现用#define定义的10,10000,'w'都与直接使用没有差别,所以我们可以把这种方式看成是给数据取了个名字,方便调用,增强代码的可读性
4枚举变量
#include<stdio.h>
enum SEX
{
//列出了枚举类型enum SEX的可能取值
//枚举常量
MALE=4,//可以赋初值,如果不赋初值默认从0开始
FEMALE=6,
SECRET=9
};
int main()
{
enum SEX s = FEMALE;
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
return 0;
}
枚举 :一一列举
枚举常量:代表该枚举类型的变量可能取的值
printf与scanf
都是库函数 - C语言的编译器提供的现成的函数,直接可以使用
使用的时候要包含头文件stdio.h
printf的作业是输出数据,数据从内存打印(输出)到屏幕上
scanf的作用是输入数据,数据从键盘读取到内存中
printf
int n=0;
int a=0,b=0
printf("%d",n);
printf("%d %d\n",a,b);
这里的"%d"表示的是输出格式,n即为想要打印的内容
输出格式如上,想输出多个数据见最后一行
scanf
int n;
int a,b;
scanf("%d",&n);
scanf("%d %d",&a,&b)
这里的"%d"表示的是输入格式,n即为想要获取的内容
输入格式如上,想输入多个数据见最后一行
VS中直接使用会报错此时可以在第一行直接加上#define _CRT_SECURE_NO_WARNINGS 1
或者使用scanf_s(不推荐,因为其他平台不支持)
&为取址符,前面我们了解了创建变量的本质是在内存中开辟一片空间,用来存放数据,&的作用就是取n的地址,然后scanf()这个函数就可以将从键盘获取的内容存到n的地点
常用的格式
%a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)
%c 字符
%d 有符号十进制整数
%ld 输出长整型数据。(long long类型为%lld)
%f 浮点数(float,doulbe)(控制小数位数可使用 .n%f n是要保留的小数位数)
%e(%E) 浮点数指数输出[e-(E-)记数法]
%g(%G) 浮点数不显无意义的零"0"
%i 有符号十进制整数(与%d相同)
%u 无符号十进制整数
%o 八进制整数 e.g. 0123
%x(%X) 十六进制整数 e.g. 0x1234
%p 指针
%s 字符串
%% "%"