下面的程序示例给出了位运算的一些简单应用。编写程序实现功能:不用临时变量交换两个整型变量的值。编写程序实现功能:利用二进制位运算进行十进制整数到二进制数的转换。如果被转换的十进制数是正数,则其补码与其原码相同,转换时只需要判断出最高位(符号位)以外的所有二进制位,二进制位值为1时输出1,二进制位值为0时输出0即可得到转换后的二进制数据。......
2023-11-20
C语言中提供了一个关键字typedef,使用typedef可以给已有的数据类型声明一个别名,也可以根据需要构造复杂的数据类型。
1.使用typedef为数据类型取别名
声明别名的一般形式为:
typedef数据类型别名;
例如,typedef int INTEGER;就为系统内置数据整型(int)类型取了另外一个名字INTEGER。此后,int j,k;和INTEGER j,k;的意义相同。
在定义结构体类型时,为了描述结构体类型对应的意义,常常使用比较长的数据类型名。可以使用typedef为结构体数据类型取一个方便程序中使用的别名。例如,可以通过如下C语句为前面定义好的结构体数据类型struct student取别名:
typedef struct student STU;
对于结构体这种自定义类型,还可以在定义数据类型的时候就同时为其取别名。例如,下面的代码段就在定义结构体数据类型struct student的同时为其取别名STU:
结构体类型struct student取别名后,下面两种定义结构体变量的意义相同:(www.chuimin.cn)
STU stu1,stu2,stu3;
struct student stu1,stu2,stu3;
typedef与#define有相似的地方,但二者是不同的,前者是由编译器在编译时处理的;后者是由编译器在编译预处理时处理的,而且只能作简单的字符串替换。
2.使用typedef构造复杂数据类型
使用typedef还可以构造复杂结构的数据类型,由于不同的应用环境对复杂结构数据的要求不同,所以使用typedef关键字构造复杂结构数据没有统一的形式,在应用程序中应该根据需要构造合适形式的数据类型。下面用几个示例演示复杂结构数据类型的构造方法。
【例10.1】 用typedef构造指定长度的字符串(一维数组)数据类型。
【例10.2】 用typedef构造指定行数和列数的二维数组类型。
【例10.3】 用typedef构造指针数据类型。
有关C语言程序设计基础(第3版)的文章
下面的程序示例给出了位运算的一些简单应用。编写程序实现功能:不用临时变量交换两个整型变量的值。编写程序实现功能:利用二进制位运算进行十进制整数到二进制数的转换。如果被转换的十进制数是正数,则其补码与其原码相同,转换时只需要判断出最高位(符号位)以外的所有二进制位,二进制位值为1时输出1,二进制位值为0时输出0即可得到转换后的二进制数据。......
2023-11-20
图5.7两层函数嵌套调用示意图函数的嵌套调用即一个函数在被调用的过程中又调用了另外的一个函数。函数fac和powers的返回值类型均被设计为double型,其主要目的是为了避免n!x:0.5//0.5从键盘输入的数据0.50 powers of e=1.648721//程序执行结果......
2023-11-20
A.与参数x的类型相同B.无法确定C.void类型D.int类型3.为了避免嵌套的条件语句if-else的二义性,C语言规定()。A.else与缩排位置相同的if配对B.else与同一行上的if配对C.else与其之后最近的if配对D.else与其之前最近的尚未配对的if配对4.设x、y、z和k都是int型变量,则执行表达式:x=后,x的值为()。A.7 B.6 C.5 D.47.在C语言程序中,用关键字()定义无符号型变量。else语句实现两个分支。......
2023-09-19
C语言中逻辑运算符及其含义见表3.2。表3.2逻辑运算符及其含义逻辑运算符“&&”和“||”是双目运算符,具有左结合性;“!”表3.3逻辑运算真值表C语言中进行逻辑表达式求值运算时,不但要注意逻辑运算符本身的运算规则,而且还必须要遵循下面的两条原则:·对逻辑表达式从左到右进行求解。......
2023-11-20
复合语句的构成形式如下:C程序设计中,描述控制结构中多条C语句才能完成的功能时,就需要使用复合语句。在C程序中,需要使用复合语句的地方必须使用复合语句的形式,否则程序在语法上可能检查不出任何错误,但程序运行的结果与程序设计者的期望会相去甚远。C语言中规定,复合语句中也可以定义变量,这方面的知识涉及变量的作用范围问题,我们将在“变量的作用域”章节中予以讨论。......
2023-11-20
针对不同的实际应用,数据排序方法有很多种。本节介绍两种常用排序方法的基本思想和实现方法,帮助读者初步理解排序方法的计算机解决思路。②不考虑已排好序的数据,将剩下的数据作为待排序列。编写程序实现冒泡排序算法,对随机生成的10个3位整数按升序进行排序并输出。......
2023-11-20
一个函数直接或间接地调用自己,称为函数的递归调用。所以函数递归调用的实现必须依靠系统提供一个特殊部件(堆栈)存放未完成的操作,以保证当递归调用结束回溯时不会丢失任何应该执行而没有执行的操作。为了理解函数递归调用的特性,参照例5.9的程序讨论函数递归调用的执行过程,为了讨论方便为程序加上行号。函数递归调用示例。......
2023-11-20
习惯把用typedef声明的类型名用大写字母表示,以便与系统提供的标准类型标识符区别。用tpyedef可以声明数组类型、字符串类型,使用比较方便。用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型。使用typedef有利于程序的通用与移植。有时程序会依赖于硬件特性,用typedef便于移植,例如,有的计算机系统int型数据占用2个字节,而另一些机器则占用4个字节。......
2023-11-18
相关推荐