栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

六、0基础都能看懂(会打字就会C)--C语言编程基础--C语言中的常量

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

六、0基础都能看懂(会打字就会C)--C语言编程基础--C语言中的常量

常量:顾名思义,就是不变的量。

在C语言中我们一般将常量分为以下四种类型:

字面常量

const修饰的常变量

#define定义的标识符常量

枚举常量

字面常量

字面常量一般没有实际的意义,如下面程序:

#include 
int main()
{
	2;
	3.13;
	'a';
	"abcdef";

	return 0;

我们分别写出来了2(整型)、3.13(浮点型)、a(字符型)、abcdef(字符串),这些常量就被称为“字面变量”,但是我们也明显的发现这些字面常量没有实际的意义。

const修饰的常变量

#include 
int main()
{
	int a = 10;
		a = 20;
		printf("%dn",a);
	return 0;
}

上面的程序我们先将a变量进行了定义,然后我们将a进行了赋值并输出了它,阅读上面的程序,我们显然可以得到输出结果为20。

#include 
int main()
{
	 const int a = 10;
	 int a = 20;
		printf("%dn",a);
	return 0;
}

上面的程序,在int a=10前面加上了const,我们就将a从变量变成了常变量(顾名思义就是数字不变了,但是本质上还是变量),我们在后面对a又进行了赋值(即使赋予了相同的值也是不可以的),这就与前面“const修饰a,a是不变的。”产生了冲突,所以上面的程序就不可以执行!

#include 
int main()
{
	 const int a = 10;
		printf("%dn",a);
	return 0;
}

但是为什么我说const修饰后a是常变量,而不是常量呢?

我们可以通过下面的程序来证明:

#include 
int main()
{
	int a = 10;
	int [a] = { 0 };
	return 0;
}

上面这个程序中int [a]={0}是数组,其中a应该是常量(数组后面会讲,我们先知道这个就可以了);因为a要是一个常量,但是我们定义的a,我们在后面没有对a进行赋值,所以a是一个常量,所以上面的程序是执行不出来了的。

#include 
int main()
{
	const int a = 10;
	int [a] = { 0 };
	return 0;
}

上面这个程序,我们知道a是一个定值,假如const定义后的a是一个常量,那么我们这个程序是可以执行的,但是当我们执行的时候,我们就会发现a是一个变量,不是常量,也就是前面说的常变量。

#define定义的标识符常量

#include 
#define ah 1000;
int main()
{
	int a = ah;
	printf("%dn",a);
	return 0;
}

如上面的程序我们先将ah声明出来,在这个程序中我们就默认ah的值为1000,后面我们对a这个变量进行了初始化,我们打印出来就可以得到结果1000。

#include 
int main()
{
#define ah  1000;
	int a = ah;
	printf("%dn",a);
	return 0;
}

当然我们的define定义在里面也是可以的,但是一定要定义在我们赋值的前面!

枚举常量

枚举常量中的枚举和数学上的枚举法的枚举是一样的,就是我们可以将这些数据一一举例出来。枚举在我们生活中也是广泛存在的,例如我们说性别、血型等,我们都是可以一一例举出来的。(在我们后面的学习中,我们可以更加详细的学习)

在C语言中我们使用enum来对数据进行枚举:

enum hhh
{
    a,
    b,
    c,
};

上面的程序我们对变量hhh就行了枚举,变量hhh未来可能的取值只有a,b,c.(这三个值叫枚举常量)

当我们将上面的打印出来:

#include 
enum hhh
{
    a,
    b,
    c,
};
int main()
{
    printf("%dn",a);
    printf("%dn",b);
    printf("%dn",c);
    return 0;
}

 

我们可以知道上面的可能取值成0开始,0的位置为前面去变量hhh的定义的第一个也就是a,然后按hhh定义的顺序逐渐增加1。

假如我们一开始对a赋值了20,那么

#include 
enum hhh
{
    a=20,
    b,
    c,
};
int main()
{
    printf("%dn",a);
    printf("%dn",b);
    printf("%dn",c);
    return 0;
}

 但是它只知道像后加,不会向前减!

#include 
enum hhh
{
    a,
    b=23,
    c,
};
int main()
{
    printf("%dn",a);
    printf("%dn",b);
    printf("%dn",c);
    return 0;
}

 我们也是可以强行赋值,例如我们可以对a赋值20,对b赋值100,那么输出结果就是20 100 101。

我们也可以对变量进行全部进行赋值,那么输出结果就是我们所赋的值。所以我们可以得出一个结论:枚举输出时,假如是赋值,那么就是赋值不变,如果不是赋值,那么就看前面的数,然后加1,输出结果就是当前数字,如果是第一个,那么输出结果就为0。

我们也是可以使用枚举常数的,先将上面的enum hhh复制下来(建议复制,不要打出来。)后面加上我们要赋值的变量,然后输出就可以了。

 enum hhh m = c;
#include 
enum hhh
{
    a=30,
    b=23,
    c,
};
int main()
{
    enum hhh m = c;
    printf("%dn",m);
    return 0;
}

从上面的程序,我们知道打印的是m,而m是我们与枚举元素c的值相等。我们发现c没有赋值,所以我们看前面一位,前面是赋了值,它是23,所以c就是24,所以我们打印的结果就是24。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017934.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号