前言:不出意外的话,我将在这里记录我的大学编程学习。
因为我也是小白,所以如果大家看到问题的话,可以直接在下面评论或者加我v私我,感谢大家!
个人v:m0106gm
祝我们前程似锦
本人使用的开发环境工具是vs2022
文章目录
- 1.第一个C语言
- 2.数据类型
- 1.为什么需要有数据类型呢?
- 2.常见的基本数据类型
- 3.基本数据类型的使用
- 4.基本数据类型的大小
- 3.变量和常量
- 1.变量
- 1.变量的定义
- 2.变量的分类
- 3.变量的使用
- 4.变量的生命周期和作用域
- 1.作用域
- 2.生命周期
- 2.常量
- 1,2.字面常量和const修饰的常变量
- 3.#define定义的标识符常量
- 4.enum修饰的枚举常量
无论是c,c++,Java等各种各样的计算机语言,我们实施的时候都是一个个的项目,每一个项目包含各种的文件,文件又由各种函数组成,所以文件有一个主函数,作为编译的入口。
如何写代码
//写主函数(main函数,即函数名为main)
int main() //int为函数返回类型
{ //花括号里面的内容叫函数体
return 0;
}
main函数是程序执行的入口,且main函数有且只能是一个,一个项目中会有多个文件,但一个项目中只能有一个main函数。
接下来,我们写个代码,打印出"你好,世界:Hello World!"
知识储备>
- printf是库函数,作用是打印出引号" "里面的东西
- 使用printf需要引用头文件stdio.h
- 使用头文件需要用#include进行预处理(不懂没关系,现在只要知道需要这样打代码就行)
#include2.数据类型 1.为什么需要有数据类型呢?int main() { printf("你好,世界:Hello World!"); return 0; }
2.常见的基本数据类型我们使用计算机语言来编写程序实际上是为了解决我们的现实问题,在生活中,我们有年龄,是一个整数,价格,需要小数,因此不同的场景需要不同的类型
3.基本数据类型的使用char //字符型
short //短整型
int //整型
long //长整型
long long //更长的整型
float //单精度浮点型
double //双精度浮点型
int main()
{
char ch = 'a';
int age = 20;
double price = 36.3;
return 0;
}
//ch,age,price都是是变量名,我们使用数据类型的时候需要定义变量来存放我们要使用的东西,例如我们需要使用一个字母’a’,使用字符类型char并定义变量ch把a存放到里面;同理,我们需要使用年龄,使用整型int并定义变量age把20存放到里面,使用价格,使用浮点型double并定义变量price把36.3存放到里面.
上面我们只是定义了这些数据类型和变量,那么怎么打印呢?
格式说明:以格式符%和格式字符组成%c 打印字符型
%hd 打印短整型
%d 打印整型
%ld 打印长整型
%lld 打印更长的整型
%f 打印单精度浮点型
%lf 打印双精度浮点型
%s 打印字符串
%p 打印地址
%o 打印八进制整型
%x或%X 打印十六进制整型
//使用了printf函数所以需要引用头文件stdio,'n是换行符 #includeint main() { char ch = 'a'; short a = 10; int b = 20; long c = 30; long long d = 25; float e = 23; double f = 36.3; printf("%cn",ch); printf("%hdn", a); printf("%dn", b); printf("%ldn", c); printf("%lldn", d); printf("%fn", e); printf("%lfn", f); return 0; }
4.基本数据类型的大小输出
回答之前,我们首先要了解,数据在计算机中是如何存储的,这里只简单说一下,数据在计算机中是以二进制的形式进行存储的,只能存放数字0或1。
什么是二进制呢?生活中我们的数学计算用的是十进制,0~9,10进1,比如13+28,3与8相加大于10,则进一与1,1与2相加再与进位相加则为4,故答案为41。
而二进制就是逢2进1,计算机只能存放1或者0这俩个数字,计算机内的任何东西都是有1和0这俩个数字组成的,像011010100101010010101010100;这就是二进制.
计算机中的单位
最小单位:bit(比特)(在计算机中1比特容纳一个数字0或1)
byte(字节) 1byte=8bit
kb 1kb=1024bit
mb 1mb=1024kb
gb 1gb=1024mb (我们常说的1G,2G就是这个)
tb 1tb=1024gb
pb 1pb=1024tb
回答问题:不同的数据类型占用的大小是多少呢?
printf("%dn".sizeof(char));
printf("%dn".sizeof(short));
printf("%dn".sizeof(int));
printf("%dn".sizeof(long));
printf("%dn".sizeof(long long));
printf("%dn".sizeof(float));
printf("%dn".sizeof(double));
知识储备>
- C语言中的关键字或操作符sizeof,作用是计算变量或类型所占的空间大小
- printf:输出函数。使用方法:printf(“i love you!”); 引号" "里面的内容可以打印出来。
- %d:以整型的方式打印出来。
- n:换行符
3.变量和常量可以看出,每一个基本数据类型的大小,对应的单位是字节,即int型是4个字节,32个比特位。
- 可能这时候有人会疑惑了,为什么长整型的大小也是4个字节呢?
其实,C语言是这样规定的:sizeof(long)>=sizeof(int),也就是说long的大小只要大于等于int型就好- 可能这时候又会有同学疑惑了,为什么要有短整型,整型,长整型这么麻烦啊?
为了节省空间!如果我们要使用的数值较小,那我们使用short就够了,只用了2个字节,不需要使用int而花费了4个字节的大小
生活中有些值是不能变的,比如圆周率,身份证号码,血型等,还有些值是可以改变的,比如你的年龄,今天周几,体重等,不变的量叫做常量,可以改变的量,叫做变量
1.变量 1.变量的定义#includeint main() { int age = 19; //建立一个整整变量age double score = 99.5; //建立一个浮点型变量score printf("%dn", age); printf("%lfn",score); age = 20; //变量变量,可以改变的量,重新赋值 score=score-10; printf("%dn", age); printf("%lfn",score); return 0; }
输出: 19 99.500000 20 89.500000
2.变量的分类注意,创建变量的时候我们建议同时初始化它,如果不知道它一开始是什么值,就初始化为0,即:
推荐:int a=0;(即:数据类型 变量名=0;)
不推荐:int a;
第二种虽然也符合语法,但是存在一些细节问题,以后深入学习后就知道了,第一种也是好的编程习惯
#includeint a = 10; //全局变量,{}外定义的变量 int main() { int age = 19; //局部变量,{}内定义的变量 return 0; }
#include3.变量的使用int a = 10; //全局变量。{}外定义的变量 int main() { int a = 19; //局部变量,{}内定义的变量 //此时输出打印的是19,即当全局变量和局部变量同名时,局部优先 //不建议把全局变量和局部变量的名字写成一样 printf("%d", a); return 0; }
打印俩个整数的和:知识储备>
scanf函数:输入函数,与printf输出函数相对。
使用方法:scanf(“%格式字符”,&变量名);&是取址符,取地址,即把我们输入的东西放到这个变量的地址中存放起来。例:scanf(”%d",&a);即当我们输入一个10时,10就放到了a的地址中,此时a就等于10。scanf函数中引号“ ”里面的东西就是我们需要输入的演示: #includeint main() { int a = 0; scanf("%d", &a); printf("%d", a); return 0; }
#include4.变量的生命周期和作用域 1.作用域int main() { int a = 0, b = 0; //定义变量时,同种数据类型可以同时定义,中间用逗号“,”隔开 printf("请输入俩个整数>:n"); scanf("%d %d", &a, &b); //输入“10 20”的话,a就等于10,b等于20 int sum = a + b; printf("%d", sum); return 0; }
作用域是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的
而限定这个名字的可用性的代码范围就是这个名字的作用域。
局部变量的作用域是变量所在的局部范围。(其实局部变量的作用域就是它建立的那个{}内)
#includeint main() { int a = 99; printf("%dn",a); //可以打印 { printf("%dn", a); //可以打印 } { int b=10; printf("%dn", b); //可以打印 } printf("%dn", b); //出错,不可以打印 return 0; }
全局变量的作用域是整个项目工程
#include2.生命周期int a = 99; int main() { printf("%dn",a); //可以打印,输出99 { printf("%dn", a); //可以打印,输出99 int a = 10; printf("%dn", a); //可以打印,输出10,定义了同名局部变量,此时局部变量优先 } printf("%dn", a); //可以打印,输出99,此时不在局部变量的作用域中了 return 0; }
变量的生命周期指的是变量从创建到销毁之间的一个时间段
- 局部变量的生命周期是:进入作用域的时刻生命周期开始,出作用域时生命周期结束。
- 全局变量的生命周期是:整个程序的生命周期
2.常量这时你可能比较迷糊,认为那生命周期和作用域不就一样么?其实是不一样的,这是俩个完全不同的概念,这里搞不太懂也没有关系,后续学到static关键字的时候就会理解得更深一点了
C语言中的常量分为以下以下几种:
- 字面常量
- const 修饰的常变量
- #define 定义的标识符常量
- 枚举常量
#include3.#define定义的标识符常量int main() { //1. 字面常量,就是普通的单纯的常量,存在,但没什么意义 23.23; 166; 'f'; "wxhn"; //2.const修饰的常变量(本质上还是变量) int a = 0; //定义变量 a = 20; //是变量,可以修改 printf("%d", a); const int b = 0; //定义常变量,具有常属性(不可修改) b = 10; //报错,b不可修改 printf("%d", b); return 0; }
//3.#define定义的标识符常量 #include4.enum修饰的枚举常量//创建了一个#define定义的标识符常量MAX,令它等于10000,在下面的程序中,MAX就代表10000 #define MAX 10000 //通常默认规定#define定义的标识符常量名全部用大写字母表示,以便区分 int main() { int a = MAX; printf("%dn", a);//输出打印10000 MAX = 224;//报错,此时MAX就是一个常量,不可改变 return 0; }
enum Color //定义一枚举常量三原色,其实这相当于一种数据类型
{
//这种枚举类型的变量未来的可能取值:
RED, //enum定义的枚举常量通常也默认规定全部用大写字母表示,以便区分
YELLOW, //列举枚举常量时用逗号隔开
BLUE,
};
#include
int main()
{
enum Color color = YELLOW;
printf("%dn", color);
printf("%dn", RED);
printf("%dn", YELLOW);
printf("%dn", BLUE);
return 0;
}
输出打印:
从这里我们可以看出,enum定义的枚举常量会自动初始化,第一个是0,从上到下依次加1
#includeenum Color { RED, YELLOW, BLUE, }; int main() { enum Color color = YELLOW; YELLOW = 3;//报错,此时RED,YELLOW等都是常量,不可修改 return 0; }
但我们可以这样:>
#includeenum Color { RED, YELLOW=3, //在列举枚举常量时初始化 BLUE, }; int main() { enum Color color = YELLOW; printf("%dn", color); printf("%dn", RED); printf("%dn", YELLOW); printf("%dn", BLUE); return 0; }
此时输出: 3 0 3 4
初始化后,后面的值依然依次加1



