C语言8 位域、联合、枚举、定义类型及预处理功能
- 格式:ppt
- 大小:154.50 KB
- 文档页数:17
C语⾔基础--结构体对齐,位域,联合体结构体对齐1--结构体对齐的原因与意义许多计算机系统对基本数据类型的可允许地址做出了⼀些限制,要求某种类型的对象的地址必须是某个值K(通常是2,4,8)的倍数,⽽这个k则被称为该数据类型的对齐模数(alignment modulus)。
这种对其限制不仅简化了处理器与存储系统之间的接⼝的硬件设计,⽽且提⾼了存储系统的性能。
2 -- 结构体对齐包括两个⽅⾯的含义1)结构体总长度2)结构体内各数据成员的内存对齐,即该数据成员相对结构体的起始位置3--不同编译器的对其策略1)Linux沿⽤的对其策略是2字节的数据类型(例如short)的地址必须是2的倍数,⽽更⼤的数据类型(如int,double)的地址必须是4的倍数。
2)Windows对齐要求更要严格些,任何K字节(基本)对象的地址都必须是k的倍数。
4 -- 结构体⼤⼩的计算⽅法和步骤1)将结构体内所有数据成员的长度值相加,记为sum_a;2)将各数据成员为了内存对齐,按各⾃对齐模数⽽填充的字节数累加到和sum_a上,记为sum_b。
对齐模数是#pragma pack指定的数值以及该数据成员⾃⾝长度中数值较⼩者。
该数据相对起始位置应该是对齐模式的整数倍;3)将和sum_b向结构体模数对齐,该模数是#pragma pac指定的数值和结构体内部最⼤的基本数据类型成员长度中数值较⼩者。
结构体的长度应该是该模数的整数倍.4)Linux与Windows基本数据类型⼤⼩以及对齐模数char short int long double long double平台长度与对齐模数Windows长度124488对齐模数124488Linux长度1244812对齐模数1244443.例⼦1)1: struct my_struct 2: { 3: char a; 4: long double b; 5: };Windows分析:步骤1:得出sum_a=1+8=9;步骤2,数据成员a放在相对偏移0处,之前不需要填充字节;数据成员b为了内存对齐,根据“结构体⼤⼩的计算⽅法和步骤”中第⼆条原则,其对齐模数是8,之前需填充7个字节,sum_a + 7 = 16B --> sum_b = 16 B步骤3:按照定义,结构体对齐模数是结构体内部最⼤数据成员长度和pragma pack中较⼩者,前者为8后者为4,所以结构体对齐模数是4。
c 枚举定义枚举(Enumeration)是C语言中的一种数据类型,用于定义一组具有互相关联的、离散的、有限的取值范围的常量集合。
枚举类型可以简化程序编写过程,提高代码的可读性和可维护性。
本文将介绍C语言中枚举的定义方式,以及在实际应用中的使用方法。
一、枚举的定义C语言中,通过关键字"enum"来定义枚举类型。
枚举类型的定义格式如下:```enum 枚举类型名 {枚举常量1,枚举常量2,...};```其中,枚举类型名是用户自定义的标识符,用于表示整个枚举类型。
枚举常量是具体的取值,用逗号分隔。
枚举常量的值默认从0开始,依次递增。
例如,我们定义一个表示星期的枚举类型:```cenum Week {MON,TUE,WED,THU,FRI,SAT,SUN};```在上述代码中,我们定义了一个枚举类型"Week",其中包含了七个枚举常量,分别表示星期一到星期日。
二、枚举的使用枚举类型可以像其他数据类型一样使用,在程序中可以声明枚举类型的变量,并对其赋值。
例如:```cenum Week today = MON;```上述代码中,我们声明了一个名为"today"的枚举类型的变量,并将其赋值为星期一对应的枚举常量"MON"。
枚举变量的赋值只能使用枚举常量,不能直接使用整数值。
在枚举类型中定义的枚举常量是唯一的,可以直接使用常量名来进行赋值操作,提高了代码的可读性。
枚举类型的变量可以进行比较操作,以判断其是否相等。
例如:```cenum Week day1 = MON;enum Week day2 = TUE;if (day1 == day2) {printf("两个枚举变量相等\n");} else {printf("两个枚举变量不相等\n");}```上述代码中,我们通过比较两个枚举变量"day1"和"day2"的值,得出它们是否相等的结论。
c语言枚举详解在C语言中,枚举(enum)是一种用户定义的数据类型,它允许您为一组相关的常量分配描述性的名字。
枚举类型通常用于表示一组固定数量的选项或状态。
枚举的基本语法如下:```cenum 枚举名称 {枚举值1,枚举值2,枚举值3,...};```例如,如果我们想表示一周中的几天,我们可以定义一个名为`DayOfWeek`的枚举类型:enum DayOfWeek {MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY};```在这个例子中,`MONDAY`、`TUESDAY`等都是枚举值,它们都是`DayOfWeek`枚举类型的有效值。
您也可以使用描述性的名字作为枚举值,例如:```cenum DayType {WORKDAY,WEEKEND,HOLIDAY```枚举类型的使用:1. 作为变量类型:您可以声明一个变量并给它分配一个枚举值。
例如:```cDayType myDay = WORKDAY; // myDay 是DayType枚举类型的一个变量,它的值为WORKDAY。
```2. 在switch语句中使用:由于枚举值是整数,因此您可以在switch语句中使用它们。
例如:```cenum DayType day = WEEKEND;switch(day) {case WORKDAY:printf("Today is a workday.\n");break;case WEEKEND:printf("Today is the weekend.\n");break;case HOLIDAY:printf("Today is a holiday.\n");break;}```注意事项:枚举类型是有符号的,它们的默认整数类型是int,但可以通过指定其他整数类型来改变。
例如,您可以将枚举类型的整数类型设置为short、char等。
c语言union和位域的使用C语言中的union和位域是用来对内存进行灵活管理的工具。
1. Union(联合):Union是一种特殊的数据类型,类似于结构体,可以在同一块存储区中存储不同类型的数据,但是同一时间只能存储其中的一个值。
Union的大小取决于其成员中最大的成员大小。
Union的定义格式:```union union_name {member_type1 member1;member_type2 member2;...};```Union的使用示例:```#include<stdio.h>union data {int num;float f;char str[20];};int main() {union data d;strcpy(d.str, "Hello");printf("String: %s\n", d.str);d.num = 10;printf("Number: %d\n", d.num);d.f = 3.14;printf("Float: %f\n", d.f);return 0;}```输出:```String: HelloNumber: 10Float: 3.140000```2. 位域:位域是一种用来指定数据成员的位数的机制,可以在一个字节中存储多个数据成员。
在定义结构体或联合体中的成员时,可以指定其占用位数。
位域的定义格式:```struct {type member_name : width;};```其中,type表示数据成员的类型,member_name表示成员的名称,width表示成员占用的位数。
位域的使用示例:```#include<stdio.h>struct {int a : 3;int b : 4;int c : 5;} bits;int main() {bits.a = 2;bits.b = 7;bits.c = 20;printf("a: %d\n", bits.a);printf("b: %d\n", bits.b);printf("c: %d\n", bits.c);return 0;}```输出:```a: -2 // 使用3位存储有符号整数,最高位是符号位,所以结果为负数b: -1 // 使用4位存储有符号整数,最高位是符号位,所以结果为负数c: 4 // 使用5位存储无符号整数,所以结果为正数```注意事项:- Union和位域的使用应谨慎,因为其存储方式可能导致数据丢失或覆盖。
c中枚举类型enum用法枚举类型(enum)是C语言中非常常用的数据类型之一。
它允许程序员将一组相关的常量赋予一个具有特定类型的标识符,方便了对这些常量的使用和管理。
在本文中,我们将逐步介绍C语言中枚举类型的使用方法,包括定义、赋值和使用等方面。
一、定义枚举类型在C语言中定义枚举类型的方式非常简单,使用关键字"enum"后跟枚举类型的名称,并在大括号内列举枚举类型的取值。
下面是一个定义代表一周七天的枚举类型的示例:cenum WeekDay {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};上述代码中,定义了一个名为WeekDay的枚举类型。
它包括了七个取值:Monday、Tuesday、Wednesday、Thursday、Friday、Saturday和Sunday。
这些取值会被隐式地赋予整数值,从0开始依次递增。
因此,Monday的值为0,Tuesday的值为1,以此类推。
二、赋值给枚举变量定义枚举类型之后,我们可以声明一个枚举变量,并将一个合法的枚举取值赋给它。
下面是一个示例代码:cenum WeekDay today;today = Monday;上述代码中,我们定义了一个名为today的枚举变量,并将Monday这个合法的枚举取值赋给它。
三、与整数类型的相互转换枚举类型虽然本质上是一种整数类型,但它与普通的整数类型存在一些区别。
对于枚举变量,可以将其值以整数的形式进行打印输出,也可以进行一些整数类型的运算。
下面是一个示例代码:cenum WeekDay today = Monday;printf("Today is day %d\n", today); 打印:Today is day 0enum WeekDay tomorrow = today + 1;printf("Tomorrow is day %d\n", tomorrow); 打印:Tomorrow is day 1在上述代码中,我们将枚举变量today的值以整数的形式打印输出,并将其与整数1进行运算。
C语言详解- 枚举类型注:以下全部代码的执行环境为VC++ 6.0在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是:#define MON 1#define TUE 2#define WED 3#define THU 4#define FRI 5#define SAT 6#define SUN 7在此,我们定义一种新的数据类型,希望它能完成同样的工作。
这种新的数据类型叫枚举型。
1. 定义一种新的数据类型- 枚举型以下代码定义了这种新的数据类型- 枚举型enum DAY{MON=1, TUE, WED, THU, FRI, SAT, SUN};(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。
(2) DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。
(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。
(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。
(5) 枚举型是预处理指令#define的替代。
(6) 类型定义以分号;结束。
2. 使用枚举类型对变量进行声明新的数据类型定义完成后,它就可以使用了。
我们已经见过最基本的数据类型,如:整型int, 单精度浮点型float, 双精度浮点型double, 字符型char, 短整型short等等。
用这些基本数据类型声明变量通常是这样:char a; //变量a的类型均为字符型charchar letter;int x,y,z; //变量x,y和z的类型均为整型intint number;double m, n;double result; //变量result的类型为双精度浮点型double既然枚举也是一种数据类型,那么它和基本数据类型一样也可以对变量进行声明。
方法一:枚举类型的定义和变量的声明分开enum DAY{MON=1, TUE, WED, THU, FRI, SAT, SUN};enum DAY yesterday;enum DAY today;enum DAY tomorrow; //变量tomorrow的类型为枚举型enum DAYenum DAY good_day, bad_day; //变量good_day和bad_day的类型均为枚举型enum DAY方法二:类型定义与变量声明同时进行:enum //跟第一个定义不同的是,此处的标号DAY省略,这是允许的。
c语言枚举类枚举类是C语言中一种常用的数据类型,它允许我们定义一组具有相同特征的常量。
在本文中,我们将介绍枚举类的定义、使用及其在实际编程中的应用。
一、枚举类的定义与使用枚举类的定义使用关键字enum,后跟枚举类的名称和一对花括号{}。
在花括号中,我们可以列出枚举类中的常量,每个常量使用逗号分隔。
例如,下面是一个表示星期的枚举类的定义:enum Week {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};我们可以使用枚举类的名称和常量来声明变量,如下所示:enum Week today;变量today的类型为Week,它只能取枚举类中定义的常量值。
枚举类的常量值默认从0开始递增,但我们也可以为每个常量指定一个特定的值。
例如,我们可以修改上述星期的枚举类定义如下:enum Week {Monday = 1,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};这样,Monday的值为1,Tuesday的值为2,以此类推。
我们可以使用switch语句来根据枚举类的值执行相应的操作。
例如,我们可以根据今天是星期几来输出不同的信息,如下所示:switch(today) {case Monday:printf("今天是星期一\n");break;case Tuesday:printf("今天是星期二\n");break;// 其他星期的判断省略default:printf("今天是星期日\n");break;}二、枚举类的应用场景枚举类在实际编程中有许多应用场景,下面我们将介绍几个常见的应用场景。
1. 表示状态枚举类可以用来表示某个对象或系统的状态。
例如,我们可以定义一个枚举类来表示计算机的开关状态:enum SwitchState {OFF,ON};这样,我们就可以使用SwitchState类型的变量来表示计算机的开关状态。
c语言union和位域的使用在 C 语言中,`union`( 联合体)和位域(bit-fields)都是用于在内存中对数据进行灵活组织的特性。
1. 联合体 union):`union`是一种特殊的数据结构,允许在相同的内存位置存储不同的数据类型。
`union`中的所有成员共享同一块内存空间。
`union`的大小等于其最大成员的大小。
这意味着`union`中只能存储其中一个成员的值。
以下是一个`union`的简单示例:union MyUnion {int i;float f;char str[20];};在这个例子中,`MyUnion`是一个联合体,它包含了一个整数`i`、一个浮点数`f` 和一个字符数组`str`。
尽管这些成员占用同一块内存空间,但只能存储其中一个成员的值。
存储一个成员的值后,其他成员的值会被覆盖。
2. 位域 bit-fields):位域允许在结构体中以位(bit)为单位对数据进行存储。
通过使用位域,可以精确地控制特定数据的位数,从而节省内存空间。
以下是位域的简单示例:struct BitFields {unsigned int isMale : 1; // 1位用于存储性别信息unsigned int age : 7; // 7位用于存储年龄信息};在这个例子中,`BitFields`是一个结构体,它包含了两个位域成员`isMale` 和`age`。
`isMale` 用于存储性别信息(1 位),`age` 用于存储年龄信息(7 位)。
通过位域,可以有效地利用位数,而不是整个字节来存储数据,节省内存空间。
需要注意的是,位域在不同的编译器和系统中可能有不同的行为和实现方式,具体的使用要根据具体情况谨慎选择。
总体而言,`union` 和位域提供了在C 语言中对数据进行更灵活组织和管理的方式,但在使用时需要注意内存对齐、可移植性和程序的可读性等问题。
简述C语言中枚举的使用方法在C语言中,枚举是一种特殊类型的数据类型,允许程序员定义一组相关的常量,并且可以为这些常量赋予具体的值。
枚举在程序中的使用可以增加代码的可读性和可维护性。
本文将对C语言中枚举的使用方法进行详细介绍。
1.定义枚举类型在C语言中,通过使用关键字`enum`来定义一个枚举类型。
枚举类型的定义通常放在函数外部,全局可见。
例如:```cenum WeekdayMonday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};```在这个例子中,定义了一个名为`Weekday`的枚举类型,它包含了7个常量,分别表示一周的星期几。
2.定义枚举变量定义一个枚举变量可以使用已经定义的枚举类型。
例如,要定义一个表示星期几的变量,可以这样写:```cenum Weekday day;```3.为枚举常量赋值在枚举类型中,每个常量的默认值是从0开始递增的整数。
如果需要为常量指定特定的值,可以手动赋值。
例如:```cenum MonthJanuary = 1,February,March,April,May,June,July,August,September,October,November,December};```在这个例子中,`January`的值为1,`February`的值为2,以此类推。
4.使用枚举常量枚举常量可以在程序中像其他变量一样使用。
例如:```cenum Weekday day = Monday;if (day == Sunday)printf("Today is Sunday");```在这个例子中,将`Monday`赋给了`day`变量,然后在判断语句中检查`day`的值是否为`Sunday`。
5.枚举常量的范围枚举常量的值可以是任意整数,但是它们的值必须是唯一的。
如果没有为常量赋值,默认的第一个常量值为0,后面的常量值递增1、例如:```cenum NumbersZero, // 0One, // 1Two, // 2Three = 3,Four // 4};```在这个例子中,`Zero`的值为0,`One`的值为1,`Two`的值为2,`Three`的值为3,`Four`的值为46.枚举常量的比较枚举常量可以使用`==`、`!=`等运算符进行比较。
C语⾔位域的定义和使⽤位域的定义和使⽤ 有些信息在存储时,并不需要占⽤⼀个完整的字节,⽽只需占⼏个或⼀个⼆进制位。
例如在存放⼀个开关量时,只有0和1 两种状态,⽤⼀位⼆进位即可。
为了节省存储空间,并使处理简便,C语⾔⼜提供了⼀种数据结构,称为“位域”或“位段”。
所谓“位域”是把⼀个字节中的⼆进位划分为⼏个不同的区域,并说明每个区域的位数。
每个域有⼀个域名,允许在程序中按域名进⾏操作。
这样就可以把⼏个不同的对象⽤⼀个字节的⼆进制位域来表⽰。
⼀、位域的定义和位域变量的说明位域定义与结构定义相仿,其形式为: struct 位域结构名 { 位域列表 }; 其中位域列表的形式为:类型说明符位域名:位域长度 例如:struct bs{ int a:8; //这⾥8后可以跟 , 或 ; 都是合法的。
int b:2; int c:6;}; 位域变量的说明与结构变量说明的⽅式相同。
可采⽤先定义后说明,同时定义说明或者直接说明这三种⽅式。
例如:struct bs{ int a:8; int b:2; int c:6;}data; 说明data为bs变量,共占两个字节。
其中位域a占8位,位域b占2位,位域c占6位。
对于位域的定义尚有以下⼏点说明: 1. ⼀个位域必须存储在同⼀个字节中,不能跨两个字节。
如⼀个字节所剩空间不够存放另⼀位域时,应从下⼀单元起存放该位域。
也可以有意使某位域从下⼀单元开始。
例如:struct bs{ unsigned a:4 unsigned :0 /*空域*/ unsigned b:4 /*从下⼀单元开始存放*/ unsigned c:4} 在这个位域定义中,a占第⼀字节的4位,后4位填0表⽰不使⽤,b从第⼆字节开始,占⽤4位,c占⽤4位。
2. 由于位域不允许跨两个字节,因此位域的长度不能⼤于⼀个字节的长度,也就是说不能超过8位⼆进位。
3. 位域可以⽆位域名,这时它只⽤来作填充或调整位置。
C语言各知识点详细总结C语言是一种广泛应用于计算机科学和软件开发领域的编程语言,它简洁高效且功能强大。
本文将从基本语法、数据类型、控制结构、函数、指针以及其他一些重要概念等方面对C语言的各知识点进行详细总结。
一、基本语法1. 注释在C语言中,注释用于对代码进行解释说明或添加备注信息。
注释分为单行注释(以"//"开头)和多行注释(以"/*"开头和"*/"结束)两种形式。
2. 标识符标识符是C语言中用来标识变量、函数、数组等命名的名称。
规范的标识符命名应符合一定的规则,如只能由字母、数字和下划线组成,且不能以数字开头。
3. 变量声明和定义在C语言中,变量需要先声明后使用,声明时需要指定变量的类型。
变量的定义则是在声明的基础上给变量分配内存空间。
4. 运算符C语言支持各种算术、关系、逻辑和位运算符,用于对变量进行操作和比较。
常见的运算符有加减乘除、赋值、相等性比较、逻辑与或非等。
二、数据类型1. 基本数据类型C语言提供了几种基本数据类型,包括整型、浮点型、字符型和布尔型。
不同的数据类型在内存中占用的空间大小和表示范围有所不同。
2. 数组数组是一种存储相同类型数据元素的集合,通过索引访问各个元素。
数组的声明和定义都需要指定元素的类型和大小。
3. 结构体结构体是一种用户自定义的数据类型,可以同时存储多个不同类型的数据。
结构体通过定义内部的成员变量来描述其属性,并可以通过成员运算符"."访问各个成员。
4. 枚举枚举类型用于定义一组具有离散取值的常量,使得代码可读性更高。
通过定义枚举常量,可以使用这些常量来表示相应的取值。
三、控制结构1. 分支结构C语言提供了if语句、switch语句等用于实现分支选择的控制结构。
if语句根据条件的真假来执行相应的代码块,switch语句根据不同的表达式值选择匹配的分支执行。
2. 循环结构循环结构用于多次执行相同或类似的代码块。
C语言枚举类型详解技巧解答枚举类型是C语言中一种用户自定义的数据类型,用于定义一些具有离散取值的变量。
在C语言中,枚举类型使用关键字enum进行定义,具体格式为:```enum 枚举名取值1,取值2,...};```枚举类型的取值可以是任意的整数常量,默认情况下,取值从0开始,依次递增。
每个取值可以通过枚举名直接访问,也可以通过枚举名和取值的组合访问。
枚举类型在实际应用中具有一定的技巧,下面将对其进行详细解答。
1.枚举类型的定义位置:枚举类型的定义一般放在函数的外部,作为全局变量。
这样定义的枚举类型可以在程序的任何地方使用。
2.枚举类型的命名规则:为了提高可读性,枚举类型应该使用具有语义的命名,一般使用单数名词。
例如,定义一个表示星期的枚举类型时,可以使用如下命名:```enum WeekdaySunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};```3. 枚举类型的取值:枚举类型的取值默认是从0开始,可以手动指定取值,如果只对部分取值进行指定,其后续取值将按照指定的取值进行递增。
例如,下面的枚举类型定义中,枚举值Monday为1、Tuesday为3,其余的取值将按照递增顺序依次递增:```enum WeekdaySunday,Monday = 1,Tuesday = 3,Wednesday,Thursday,Friday,Saturday};```4. 使用枚举类型:枚举类型的取值可以通过枚举名直接访问,也可以通过枚举名和取值的组合访问。
例如,上面的枚举类型定义中,可以使用Weekday类型的变量来存储取值:```enum Weekday today = Tuesday;```也可以通过枚举名和取值的组合进行访问:```enum Weekday today = Weekday.Tuesday;```5.枚举类型的大小:编译器会根据枚举类型的取值范围来确定其大小。
枚举类型c语言枚举类型是C语言中一种比较特殊的数据类型,它允许我们为一组有限的值定义一个新的数据类型。
枚举类型可以方便地定义一些常量,避免在程序中使用魔数。
在本文中,我们将逐步介绍C语言中枚举类型的定义、初始化、使用等相关知识。
一、枚举类型的定义在C语言中,枚举类型的定义格式为:enum 枚举类型名{枚举值1,枚举值2,...};其中,枚举类型名是我们自定义的枚举类型名称,枚举值是指该枚举类型中的每个元素,可以是整型常量或字符常量等。
例如,我们可以定义一个颜色枚举类型:enum Color{RED,GREEN,BLUE};在上面的代码中,我们定义了一个名为Color的枚举类型,其中RED,GREEN和BLUE是该枚举类型的三个枚举值,它们的值默认为0、1和2,我们也可以显式指定它们的值,如下所示:enum Color{RED = 1,GREEN = 2,BLUE = 4};在这种情况下,RED的值为1,GREEN的值为2,BLUE的值为4。
二、枚举类型的初始化在C语言中,我们可以使用以下两种方式来初始化枚举类型变量:1.使用枚举值我们可以直接将枚举值赋值给枚举类型变量,例如:enum Color{RED,GREEN,BLUE};int main(){enum Color color = RED;return 0;}在上面的代码中,我们定义了一个名为color的枚举类型变量,并将其初始化为RED。
2.使用枚举类型变量名我们也可以使用枚举类型变量名来初始化另一个枚举类型变量,例如:enum Color{RED,GREEN,BLUE};int main(){enum Color color1 = RED;enum Color color2 = color1;return 0;}在上面的代码中,我们首先定义并初始化了变量color1,然后使用color1的值初始化了变量color2。
三、枚举类型的使用一旦我们定义并初始化了枚举类型变量,就可以在程序中使用它了。
第八章位域、联合、枚举、定义类型及预处理功能一、选择题1.有以下程序#include <stdio.h>#define f(x) (x*x)void main(){int i1, i2;i1=f(8)/f(4) ;i2=f(4+4)/f(2+2);printf("%d, %d\n",i1,i2);}程序运行后的输出结果是______。
A)64, 28 B)4, 4 C)4, 3 D)64, 64 答案:C2.有以下程序#include <stdio.h>#define P 3void F(int x){return(P*x*x);}void main(){printf("%d\n",F(3+5));}程序运行后的输出结果是______。
A)192 B)29 C)25 D)编译出错答案:D3.以下叙述中正确的是______。
A)预处理命令行必须位于源文件的开头B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间答案:D4.若有以下说明和定义union dt{int a;char b;double c;}data;以下叙述中错误的是______。
A)data的每个成员起始地址都相同B)变量data所占的内存字节数与成员c所占字节数相等C)程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000 D)data可以作为函数的实参答案:C5.有以下程序:#include<stdio.h>union pw{int i;char ch[2];}a;void main(){a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}程序的输出结果是。
(注意: ch[0]在低字节,ch[1]在高字节。