【初始C语言一(数据类型&常量&变量)】

【初始C语言一(数据类型&常量&变量)】,第1张

前言:不出意外的话,我将在这里记录我的大学编程学习。
因为我也是小白,所以如果大家看到问题的话,可以直接在下面评论或者加我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修饰的枚举常量

1.第一个C语言

无论是c,c++,Java等各种各样的计算机语言,我们实施的时候都是一个个的项目,每一个项目包含各种的文件,文件又由各种函数组成,所以文件有一个主函数,作为编译的入口。


如何写代码

//写主函数(main函数,即函数名为main)
int main()       //int为函数返回类型
{                //花括号里面的内容叫函数体
	return 0;
}

main函数是程序执行的入口,且main函数有且只能是一个,一个项目中会有多个文件,但一个项目中只能有一个main函数。

接下来,我们写个代码,打印出"你好,世界:Hello World!"

知识储备>

  1. printf是库函数,作用是打印出引号" "里面的东西
  2. 使用printf需要引用头文件stdio.h
  3. 使用头文件需要用#include进行预处理(不懂没关系,现在只要知道需要这样打代码就行)
#include       
int main()
{               
	printf("你好,世界:Hello World!");
	return 0;
}

2.数据类型 1.为什么需要有数据类型呢?

我们使用计算机语言来编写程序实际上是为了解决我们的现实问题,在生活中,我们有年龄,是一个整数,价格,需要小数,因此不同的场景需要不同的类型

2.常见的基本数据类型

char //字符型
short //短整型
int //整型
long //长整型
long long //更长的整型
float //单精度浮点型
double //双精度浮点型

3.基本数据类型的使用
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\是换行符
#include   
int 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("%c\n",ch);
	printf("%hd\n", a);
	printf("%d\n", b);
	printf("%ld\n", c);
	printf("%lld\n", d);
	printf("%f\n", e);
	printf("%lf\n", 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("%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));​

知识储备>

  1. C语言中的关键字或 *** 作符sizeof,作用是计算变量或类型所占的空间大小
  2. printf:输出函数。使用方法:printf(“i love you!”); 引号" "里面的内容可以打印出来。
  3. %d:以整型的方式打印出来。
  4. \n:换行符

可以看出,每一个基本数据类型的大小,对应的单位是字节,即int型是4个字节,32个比特位。

  1. 可能这时候有人会疑惑了,为什么长整型的大小也是4个字节呢?
    其实,C语言是这样规定的:sizeof(long)>=sizeof(int),也就是说long的大小只要大于等于int型就好​​​​​​​​
  2. 可能这时候又会有同学疑惑了,为什么要有短整型,整型,长整型这么麻烦啊?
    为了节省空间!如果我们要使用的数值较小,那我们使用short就够了,只用了2个字节,不需要使用int而花费了4个字节的大小
3.变量和常量

生活中有些值是不能变的,比如圆周率,身份z号码,血型等,还有些值是可以改变的,比如你的年龄,今天周几,体重等,不变的量叫做常量,可以改变的量,叫做变量

1.变量 1.变量的定义
#include 
int main()
{
	int age = 19;    //建立一个整整变量age
	double score = 99.5;  //建立一个浮点型变量score
	printf("%d\n", age); 
	printf("%lf\n",score);
	age = 20;   //变量变量,可以改变的量,重新赋值
	score=score-10;
	printf("%d\n", age);
	printf("%lf\n",score);
	return 0;
}
输出:
		19
		99.500000
		20
		89.500000

注意,创建变量的时候我们建议同时初始化它,如果不知道它一开始是什么值,就初始化为0,即:
推荐:int a=0;(即:数据类型 变量名=0;)
不推荐:int a;
第二种虽然也符合语法,但是存在一些细节问题,以后深入学习后就知道了,第一种也是好的编程习惯

2.变量的分类
#include 
int a = 10;       //全局变量,{}外定义的变量
int main()
{
	int age = 19;  //局部变量,{}内定义的变量
	return 0;
}
#include 
int a = 10;  //全局变量。{}外定义的变量
int main()
{
	int a = 19;  //局部变量,{}内定义的变量
	//此时输出打印的是19,即当全局变量和局部变量同名时,局部优先
	//不建议把全局变量和局部变量的名字写成一样
	printf("%d", a); 
	return 0;
}
3.变量的使用

打印俩个整数的和:知识储备>
scanf函数:输入函数,与printf输出函数相对。
使用方法:scanf(“%格式字符”,&变量名);&是取址符,取地址,即把我们输入的东西放到这个变量的地址中存放起来。例:scanf(”%d",&a);即当我们输入一个10时,10就放到了a的地址中,此时a就等于10。scanf函数中引号“ ”里面的东西就是我们需要输入的

演示:
#include 
int main()
{
	int a = 0scanf("%d", &a);
	printf("%d", a);
	return 0;
}
#include 
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;
}

4.变量的生命周期和作用域 1.作用域

作用域是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的
而限定这个名字的可用性的代码范围就是这个名字的作用域。

局部变量的作用域是变量所在的局部范围。(其实局部变量的作用域就是它建立的那个{}内)

#include 
int main()
{
	int a = 99printf("%d\n",a);  //可以打印
	{
		printf("%d\n", a);  //可以打印
	}
	{
		int b=10;
		printf("%d\n", b);  //可以打印
	}
	printf("%d\n", b);  //出错,不可以打印
		return 0;
}

全局变量的作用域是整个项目工程

#include 
int a = 99;
int main()
{
	printf("%d\n",a);   //可以打印,输出99
	{
		printf("%d\n", a);   //可以打印,输出99
		int a = 10;        
		printf("%d\n", a);   //可以打印,输出10,定义了同名局部变量,此时局部变量优先
	}
	printf("%d\n", a);  //可以打印,输出99,此时不在局部变量的作用域中了

	return 0;
}

2.生命周期

变量的生命周期指的是变量从创建到销毁之间的一个时间段

  1. 局部变量的生命周期是:进入作用域的时刻生命周期开始,出作用域时生命周期结束。
  2. 全局变量的生命周期是:整个程序的生命周期

这时你可能比较迷糊,认为那生命周期和作用域不就一样么?其实是不一样的,这是俩个完全不同的概念,这里搞不太懂也没有关系,后续学到static关键字的时候就会理解得更深一点了

2.常量

C语言中的常量分为以下以下几种:

  1. 字面常量
  2. const 修饰的常变量
  3. #define 定义的标识符常量
  4. 枚举常量
1,2.字面常量和const修饰的常变量
#include 
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定义的标识符常量
//3.#define定义的标识符常量

#include 
//创建了一个#define定义的标识符常量MAX,令它等于10000,在下面的程序中,MAX就代表10000
#define MAX 10000 //通常默认规定#define定义的标识符常量名全部用大写字母表示,以便区分
int main()
{
	int a = MAX;
	printf("%d\n", a);//输出打印10000
	MAX = 224;//报错,此时MAX就是一个常量,不可改变
	return 0;
}
4.enum修饰的枚举常量
/*4.enum修饰的枚举常量
枚举常量:可以被一一列举的常量,比如星期,月份,性别,血型,三原色(红黄蓝)等*/
enum Color  //定义一枚举常量三原色,其实这相当于一种数据类型
{
	//这种枚举类型的变量未来的可能取值:
	RED,    //enum定义的枚举常量通常也默认规定全部用大写字母表示,以便区分
	YELLOW,  //列举枚举常量时用逗号隔开
	BLUE,
};
#include 
int main()
{
	enum Color color = YELLOW;
	printf("%d\n", color);
	printf("%d\n", RED);
	printf("%d\n", YELLOW);
	printf("%d\n", BLUE);
	return 0;
}

输出打印:

从这里我们可以看出,enum定义的枚举常量会自动初始化,第一个是0,从上到下依次加1

#include 
enum Color  
{
	RED,
	YELLOW,
	BLUE,
};
int main()
{
	enum Color color = YELLOW;
	YELLOW = 3;//报错,此时RED,YELLOW等都是常量,不可修改
	return 0;
}

但我们可以这样:>

#include 
enum Color  
{
	RED,
	YELLOW=3, //在列举枚举常量时初始化
	BLUE,
};
int main()
{
	enum Color color = YELLOW;
	printf("%d\n", color);
	printf("%d\n", RED);
	printf("%d\n", YELLOW);
	printf("%d\n", BLUE);
	return 0;
}
此时输出:
3
0
3
4

初始化后,后面的值依然依次加1

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/874711.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存