共用体也称为联合体,其特点就是用一段连续的内存存储多个不同数据类型的数据,在写法上与结构体相似,但是在同一时刻,共用体中只有一个值是有效的,其大小由共用体中最大的数据类型决定,如果对共用体中的某个值做赋值操作,那么共用体中的其他值也会随之改变,所以,只有最后一次赋值是有效正确的
共用体的一般形式
union myUnion
{
int i;
char b;
double c;
}u;
如果对某一个成员进行赋值,其他成员也会随之改变,因为他们的值的每一个二进制位都被新值覆盖
1.共用体的地址和它的各个成员的地址一致
2.不能在定义时初始化,不能用共用体变量名作为函数参数
3.不能对共用体变量名赋值,不能引用变量名获得值
枚举类型定义
enum 枚举类型名 {标识符列表};
enum weekday {sunday,monday,tuesday,wednesday....};
枚举类型会自动填充整型常数,如:
enum weekday {sunday=0,monday=1,tuesday=2,wednesday=3....};
如果在定义时人为填充了一部分,那么后面的标识符会根据最后一个数字累加:
enum weekday {sunday=0,monday=10,tuesday=11,wednesday=12....};
weekday就是新定义的枚举类型名
可以用weekday定义变量如:
[enum] weekday myworkday;
用枚举类型定义的变量,赋值只能赋予括号内的值(标识符)
枚举类型一旦定义,那么其中的标识符就可当做整型常数使用,如:
#include
using namespace std;
enum weekday {sunday,monday,tuesday,wednesday};
int main()
{
cout<
不带参宏定义
#definde pi 3.1415926
#define HHH printf("a\n");
可以宏定义一个常数,表达式,格式字符串等
宏定义嵌套
#define pi 3.1415926
#define x pi*pi
终止宏定义
#undef pi
带参数的宏定义
#define MUL(x,y) ((x)*(y))
注意:1.参数之间,需要加上括号,整体也需要加上括号,是为了保护低优先级的运算符
2.宏名和带参数的括号之间不能加空格,否则将空格以后的字符都作为替代字符串的一部分!
【样例1】用宏定义操作for循环输出666
#include
using namespace std;
#define For(n) int i;for(int i=1;i<=n;i++)cout<<"666"<
【样例2】宏定义for循环
#include
using namespace std;
#define _for(i,a,b) for(i=a;i<=b;i++)
int main()
{
int i;
_for(i,1,5)
cout<<"777"<