共用体与位运算的学习

共用体:

union 共用体名 
    {
        数据类型1 成员变量1;
        数据类型2 成员变量2;
        数据类型3 成员变量3;
        ...
    };
    共用体所有成员变量共享同一片空间

#include <stdio.h>
 
union u 
{
    char a;
    short b;
    int c;
};
 
int main(void)
{
    union u u1;
 
    u1.a = 'A';
    printf("%c\n", u1.a);
 
    u1.b = 20;
    printf("%d\n", u1.b);
 
    u1.c = 50;
    printf("%d\n", u1.c);
    printf("%d\n", u1.b);
 
    return 0;
}

    内存大小端:
        1.内存小端:
            内存低地址存放低数据位
            内存高地址存放高数据位

        2.内存大端:
            内存低地址存放高数据位
            内存高地址存放低数据位

利用typedef函数声明:

用来声明新的类型名来达到给予类型的作用

typedef int I //I不是变量而是拥有int定义作用的新的类型名

typedef int ARRAY[10]  //ARRAY可以定义长度为十的一维整型数组

枚举:

enum 枚举类型名 
    {
        枚举常量1,
        枚举常量2,
        枚举常量3,
        ..
    };

注意:
    1.枚举类型一般说明将来变量的值在给定的常量中选择其一作为它的值
    2.枚举常量的值总是前一个枚举常量的值+1,第一个默认为0值
    3.枚举常量默认为int类型,可以直接在程序中使用

#include <stdio.h>
 
enum weekday 
{
	Monday = 1,
	Tuesday,
	Wednesday,
	Thurday,
	Friday,
	Saturday,
	Sunday
};
 
int main(void)
{
	enum weekday day;
	
	printf("请输入今天星期几:\n");
	scanf("%d", (int *)&day);
 
	switch (day)
	{
		case Monday:printf("1和6限号!\n");break;
		case Tuesday:printf("2和7限号!\n");break;
		case Wednesday:printf("3和8限号!\n");break;
		case Thurday:printf("4和9限号!\n");break;
		case Friday:printf("0和5限号!\n");break;
		case Saturday:
		case Sunday:printf("不限行!\n");
	}
 
	return 0;
}

位运算:

&   按位与
|   按位或
^   按位异或        相同为0 相异为1

~   按位取反

>>  右移            右移n位 等价于 让该数 / 2^n 
<<  左移            左移n位 等价于 让该数 * 2^n 

(1)按位异或实现数据交换:
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;

#include <stdio.h>
 
int main(void)
{
    int a = 100;
    int b = 200;
 
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
 
    printf("a = %d, b = %d\n", a, b);
 
    return 0;
}

(2)将变量的第n位置0:
        num = num & ~(1 << n)

(3)将变量的第n位置1:
        num = num | (1 << n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值