C语言中还有另外两种类似 struct
的指令
和 struct
一样可以由多个不同型别的成员组成,但 同一时间只能储存一个资料,或者可以说虽然可以用不同的成员名称取得其中的资料,但实际上不管用哪个名称都会得到同一个数值
union <名称>{
<成员型别> <成员名称>;
⋮
};
下面的程序码建立一个叫 Data
的 union
,有两个成员 n
, f
union Data{
int n;
float f;
};
用大括号指派数值,但只能有一个值,且不管用哪个成员名称存取都会得到同一笔资料(以二进位来说一样,因为整数和浮点数在二进位中的表达方式不同,所以 %d
和 %f
会得到不同的十进位数值)
#include<stdio.h>
#include<stdlib.h>
union Data{
int n;
float f;
};
int main(){
union Data data={5};
printf("%d %f\n", data.n, data.f);
}
透过成员名称修改数值,同样不管用哪个成员名称存取都会得到同一笔资料
#include<stdio.h>
#include<stdlib.h>
union Data{
int n;
float f;
};
int main(){
union Data data={5};
printf("%d %f\n", data.n, data.f);
data.n=10;
printf("%d %f\n", data.n, data.f);
data.f=50;
printf("%d %f\n", data.n, data.f);
}
用来产生多个整数常数的指令,语法是
enum <名称> {<成员名称>, <成员名称>, ...};
如果不另外指派,成员的数值预设由0开始依序递增,第一个成员是0,第二个是1以此类推
下面的程序码会建立七个常数,依序是0到6
#include<stdio.h>
#include<stdlib.h>
enum week{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};
int main(){
printf("%d %d %d", Monday, Tuesday, Sunday);
return 0;
}
如果指定第一个成员为1,成员的数值变成1~7
#include<stdio.h>
#include<stdlib.h>
enum week{Monday=1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};
int main(){
printf("%d %d %d", Monday, Tuesday, Sunday);
return 0;
}
只要是没有被指派值的成员,就会自动分配到数值,且为上一个成员加一
下面的例子中,Monday
是1,但因为 Tuesday
是0,所以之後的成员依序是1, 2, 3, 4, 5
#include<stdio.h>
#include<stdlib.h>
enum week{Monday=1, Tuesday=0, Wednesday, Thursday, Friday, Saturday, Sunday};
int main(){
printf("%d %d %d", Monday, Tuesday, Sunday);
return 0;
}
A
是1,所以 B
, C
是2, 3,但因为 D
有被指派,所以 D
是1,後面依序是2, 3
#include<stdio.h>
#include<stdlib.h>
enum week{A=1, B, C, D=1, E, F};
int main(){
printf("%d %d %d %d %d %d", A, B, C, D, E, F);
return 0;
}
虽然这个东西看似很废,但它的用途可是
.
.
.
.
.
我也不知道?,观迎各位前辈指点
>>: 30天学会 Python: Day 15-用文字才好懂
JavaScript是物件导向程序语言。物件导向程序设计,是模拟真实世界事物所发展出来的。在真实世界...
在 DAY 2~DAY 4 我们使用到了 goroutine、lock、channel,主要目标在保...
All life is an experiment. The more experiments y...
前言 这篇文章会延伸昨天所学 改变参数的使用 并且画出更多的图表 文章内容分别是 3. 折线图、散布...
陆剧线上看 Qa6drama在线免费网站观看海量高清最新电影电视剧,绝对让你体验到追剧零时差的体验。...