0
点赞
收藏
分享

微信扫一扫

(基础版)认识常量变量

玩物励志老乐 2022-03-22 阅读 122
经验分享

【前言注明】本系列主体思路均来自于B站up主“鹏哥C语言”,写文章目的主要是帮助自己理解消化大一上所学的C语言课程,并希望有更大的提升空间。希望我的文章可以帮到正在入门的你,如有错误的地方也请指正。文章大体风格将会偏向于简明扼要,重点都会标明。

锵锵,其实今天的知识点还是蛮重要的。哈哈笔者写作的第二天,虽然没人看但是会坚持下去的。

数据类型

先来看一个小例子吧,我们学习计算机,最终是要有能力写程序来解决生活中所描述的问题。

就像在一个购物商城中,有一批上架的商品,他们的标价是15.6元。那么在计算机中我们该如何进行描述呢?

15.6是一个小数,那么C语言如果要实现他,那么需要引入浮点数。

如果是描述年龄呢,那么就像50岁就是c语言中的整型。

那么有哪些类型呢?

char 字符数据类型

short 短整型

int 整形

long 长整型

long long 更长的整型

float 单精度浮点数

double 双精度浮点数

a如果在c语言中要描述为一个字符a

那么在c语言是这样实现的

#include<stdio.h>
int main()
{
char ch='a';

return 0;
}

char ch其实就是创建了一个名叫ch的字符型空间并且将a放了进去。

同理 int age=10;

short num=5;

那么他们的大小分别是多少呢?

上一节学习了printf函数的基本用法,可以打出一些简单的话语。

那么我们如何使用printf函数打印一个整数呢?

printf("%d",100);

这里还需要引入一个新的函数  sizeof函数

sizeof作为一个关键字也作为一个操作符,可以用来计算类型或变量的所占空间大小。

#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));
	return 0;

那么程序执行结果如下

 显然,sizeof的单位就是字节

在计算机中最小的单位是比特位  bit,一个比特位存放一个二进制位。

byte 字节-------8 bit

kb ----1024byte

mb----1024kb

gb-----1024mb

tb----1024gb

pb----1024tb

c语言中之所以提供如此多的类型,其实是按需索取,提高了空间的利用率

数据类型的作用其实是为了创建变量

变量与常量

生活中有很多的数据,有些可变,有些不可以变。

比如性别,血型等

但是年龄或者工资却是可以变化的。

即在c语言中,可变的数据对应变量,不可以变的则对应常量。

那么我们该如何定义一个变量呢?

就像前文所提到的,int age =20;

int是类型,age则是我们取得名字,也可以取其他的名字,同样我们还可以为其赋值。

但我不推荐不进行赋值。在创建时最好给一个初始化的值。

那么变量是否可以真的改变呢?来看下一个程序。

#include<stdio.h>
int main()
{
	int age = 0;
	age = age + 1;
	printf("%d", age);
	return 0;
}

可以看到age真的从0变到了1.所以age是可以改变的。

在这里 age是作为一个整形出现的,所以printf函数里是%d,

那么如果是float的话,便换成%f

同理 double所对应的就是%lf(后续会有更多介绍,目前只是初步整理。)

那么了解了变量和常量后,咱们来认识下一个点

变量的分类

变量大体上分为两类

全局变量和局部变量。

让我们通过几个例子来理解一下。

可以发现,当我们将age=0放进了一个新的{}内,在括号外的printf函数便无法正常接收到他。

此时,age就是一个局部变量了。 

那么我们再来改变一下这个程序。

#include<stdio.h>
int age = 10;
int main()
{
	{
		int age = 0;
	}
	printf("%d", age);
	return 0;
}

可以看到我们在主函数外写入了一个int age=10;

此时程序可以正常编译了。

可以看到显示为10。

这样这个新的age就是全局变量了。

那么如果把代码改成如下图所示呢?

#include<stdio.h>
int age = 10;
int main()
{
	
		int age = 0;
	
	printf("%d", age);
	return 0;
}

同名的局部和全局变量同时发挥作用了。

那么编译结果会变成什么样呢?答案是0.

当局部和全局变量名字发生冲突时,局部变量将优先。

那么我们该如何使用变量呢?这里举一个简单的例子,求取两数的和。

首先我们仍然引入一个新的函数----scanf函数

scanf的作用是对变量进行赋值,但是不同于printf的是需要在变量名前加上地址符&

代码如下

#include<stdio.h>
int main(){

	int a = 0, b = 0;
	scanf("%d%d", &a, &b);
	int sum = 0;
	sum = a + b;
	printf("%d", sum);
	
	
	return 0;
}

但是如果使用vs2013,2019,2022都会出现错误,这是为什么呢?原因是在vs库中他有自己所沿用的输出函数,scanf-s,但我不推荐使用,因为这个函数只可以在vs中运行,若是移到其他的软件则无法正常编译了。

​​​​​​那么该如何解决这个问题呢?

 将上图所示的大写部分

变成#define _CRT_SECURE_NO_WARNINGS 1

放置在开头即可正常使用scanf函数了。

那么编写代码时总不可能每次都输入一遍吧,所以我们需要在文件路径中找到newc++file这个文件,以记事本的形式打开并将我上面的那串字符复制进去即可。

找到你安装vs的位置,大体路径如下,可作参考

 好了,又了结一个事,好累,明天接着更后续吧。

emmm把作用域和生命周期还有字符串放一起讲好了.

举报

相关推荐

0 条评论