C语言编程入门——枚举与宏定义

枚举是编程人员自己定义的一种基本数据类型,这种类型的变量只能取枚举中的值,好处就是能够防止变量的错误赋值。用法:enum 类型名{变量1,变量2,变量3,...}

C语言中宏定义是定义在程序头部,作预处理用,有无参和有参两种,可以看作是一个过程的调用,与函数调用不一样,不涉及入栈出栈问题,调用速度快。用法:#define 替换名 原名

宏定义示例1:

# include <stdio.h>

#define DD "%d" //宏定义,在以下书写中可用DD代替"%d"。

int main(void)
{
	register int i;

	i = 54321;

	printf(DD"\n", i);  //调用宏名,与下面语句效果一样
	printf("%d\n", i);

	return 0;
}

宏定义示例2:

# include <stdio.h>

#define D "%d" //宏定义不是语句,后不需要加分号
#define P printf
#define swap(a, b) {int c; c=a; a=b; b=c;}

int main(void)
{
	int i = 3;
	int j = 5;

	swap(i, j);

	P("i = "D ", j =" D "\n", i, j); //含参数的宏定义类似于函数,根本上不同于函数,不存在函数的调用,运行速度快。

	return 0;
}

枚举示例1:

# include <stdio.h>

//定义枚举常量类型,把一个事物所有可能的取值一一列举出来,使此类型变量只能取列举出的值。
enum WeekDay //WeekDay为新类型名
{
	MonDay, TuesDay = -1, WednesDay, ThursDay, FriDay, SaturDay, SunDay
}; //列举的枚举常量,其实际值默认按顺序依次为0, 1, 2, 3...,若在某常量上赋值,则其后值依次加1。

int main(void)
{
	//int day; //定义一个星期变量,而定义为int类型,明显不合适,因为星期变量是从星期一到星期天。
	enum WeekDay day = FriDay;

	printf("%d\n", day); //列举的枚举常量,其实际值默认按顺序依次为0, 1, 2, 3...

	return 0;
}

枚举常量的值:

列举的枚举常量,其实际值默认按顺序依次为0, 1, 2, 3...,若在某常量上赋值,则其后值依次加1。

# include <stdio.h>

enum WeekDay
{
	MonDay, TuesDay, WednesDay, ThursDay, FriDay, SaturDay, SunDay
};

void f(enum WeekDay);

int main(void)
{
	enum WeekDay day;

	f(FriDay); //FriDay实际值是4

	return 0;
}

void f(enum WeekDay	i)
{
	switch (i)
	{
	case 0:
		printf("MonDay\n");
		break;
	case 1:
		printf("TuesDay\n");
		break;
	case 2:
		printf("WednesDay\n");
		break;
	case 3:
		printf("ThursDay\n");
		break;
	case 4:
		printf("FriDay\n");
		break;
	case 5:
		printf("SaturDay\n");
		break;
	case 6:
		printf("SunDay\n");
		break;
	}

	return;
}

补充:补码程序:

/*
	通过程序,可知一个数的补码是多少。
*/
# include <stdio.h>

int main(void)
{
	int i = 21; //正整数的补码十六进制输出正常
	int j = -1; //负数的补码十六进制输出取反加1,0取反后全为1,所以左边全为1,即全为F。
	int k = -3;
	int l = -100;
	int s = 0XFFFFFFF5;
	char ch = 129; //129默认为int类型,前面以0补齐,赋值给1个字节变量时,前面3个字节数据丢失。

	printf("%#X\n", i);
	printf("%#X\n", j);
	printf("%#X\n", k);
	printf("%#X\n", l);
	printf("%d\n", s);
	printf("%d\n", ch); //这就是输出为-127的原因。

	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-19 17:26:34

C语言编程入门——枚举与宏定义的相关文章

《Go语言编程入门》视频课程开课了

作为拥有多年工作经验的运维老鸟,我没有选择运维常用的Python作为我今后的主要使用语言.Python编写运维程序的开发效率虽然很高,但随着代码量的增大,以及Python的缩进式语法结构,可读性和维护性并不很高.加之Python本身的设计,并不原生支持多线程多核,我考虑到当程序代码达到一定规模时,必然会考虑它的执行效率和维护成本.最终放弃了Python,选择语言的过程中被Google新出的Go语言吸引了.Go本身脱胎于C,语法和C比较像,我本身就一直学习和编写C和PHP程序,习惯了大括号的语法结

linux 操作系统下c语言编程入门

2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序设计入门--线程操作 8)Linux程序设计入门--网络编程 9)Linux下C开发工具介绍 1)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编

C语言编程入门——动态内存分配

内存管理,是指软件运行时对计算机内存资源的分配和使用的技术.其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源.内存管理是C语言编程中重要的组成部分,C语言中的内存需要手动分配,手动释放,一般遵循分配多少,释放多少,以免造成内存泄漏.内存管理是一项重要且复杂的事情,理解内存管理,对后面课程及项目的学习会有很大的作用. 之前创建变量,是系统自动分配的内存,放在栈内存中,销毁后被系统自动回收,手动分配的内存,放在堆内存中,需要手动释放.千万不要忘记销毁对象手动将内存释放并将指针

c语言之带参数的宏定义

1.带参数的宏定义中,宏名和新参表之间不能有空格, 2.在带参数的宏定义中,形参参数不分配内存单元,因此不必作类型定义.而宏调用中的实参有具体值,要用它去代换形参,因此必须作类型说明. #include<stdio.h> #include<iostream> #define MAX(a,b) (a>b)?a:b int main() { int x, y, max; x = 2; y = 3; max = MAX(x,y); printf("%d\n",

C语言编程入门——综合练习(一)

至此,C语言的基础知识已经基本学完了,然而你会发现学完C语言,却什么也做不了,当时我学到这里时也是这样,学习编程是一个漫长的过程,前面只是编程语言的基础,后面还会有很长的路要走,希望能够坚持下去. 这里,我们做一些小程序练习,再大的程序也是由小程序组装起来的,正如:不不积跬步,无以至千里. 求菲波拉契亚数列: # include <stdio.h> int main(void) { int n; long f1, f2, f3; int i; f1 = 1; f2 = 2; printf(&q

C语言编程入门——综合练习(四)上机考试题

这份程序是我们学院C语言上机考试题库中的部分题,由我同学总结,并共享给大家.(Word中的程序,排版有些问题,还请见谅) 求n个(项)数据之和或积 //求n个数据的和(或积) #include <stdio.h> int main() { int a[100];  int i = 0; int n; printf("此程序将实现累和还有累积的功能,请输入项数\n"); scanf("%d", &n); printf("请输入各项\n&q

C语言编程入门——结构体(上)

 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据结构.结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问. 结构体是自己定义的结构类型,为以后创建链表结点作铺垫. 定义结构体的三种方式: # include <stdio.h> //第一种方式 struct Student_1 //str

C语言编程入门——指针(上)

指针,是C语言的灵魂,也是C语言与其他高级编程语言不同的地方,它可以灵活的操作内存,同样,也会带来很多问题,需要安全的使用指针. 指针变量是指存放变量地址的变量,刚开始学可能会有点困难,需要多多理解. 指针常见错误1: # include <stdio.h> int main(void) { int * p; //定义int类型变量指针p int i = 3; *p = i; //此语句错误,*p未初始化,p存放了未知的地址,指向了未知的变量,如果被i修改,则会导致错误. printf(&qu

C语言编程入门——函数(上)

函数是结构化编程语言中最重要的组成部分,模块独立化的基本单位. 函数的声明: # include <stdio.h> void f(void); //函数的声明,即声明f是一个函数. void g(void); void f(void) { printf("哈哈!\n"); printf("哈哈!\n"); printf("哈哈!\n"); } int main(void) { f(); f(); g(); return 0; } v