7 个解决方案
#1
enum{a=1,b,c,d} 这样后面的数据就都是>0 的,
然后使用的使用赋值给 无符号整数就是了 .....
内存结构,
我的理解是有些接近 int,
枚举值就是 int值,
一个枚举变量赋值, 就相当于是一个int赋值,
只是 int 赋值在整数范围都是可以的,
而 枚举赋值就是被枚举的几个值可以被赋值 ...
理解的不对勿怪勿怪。
然后使用的使用赋值给 无符号整数就是了 .....
内存结构,
我的理解是有些接近 int,
枚举值就是 int值,
一个枚举变量赋值, 就相当于是一个int赋值,
只是 int 赋值在整数范围都是可以的,
而 枚举赋值就是被枚举的几个值可以被赋值 ...
理解的不对勿怪勿怪。
#2
typedef enum tagE_TYPE {
a, b, c, d, e
} E_TYPE;
1.
默认就是无符号整型,除非你定义的时候写成a = -1, b, c, ...
2.
E_TYPE e_type = b; // 当定义e_type的时候,内存分布就是:分配一个int字节.
a, b, c, d, e
} E_TYPE;
1.
默认就是无符号整型,除非你定义的时候写成a = -1, b, c, ...
2.
E_TYPE e_type = b; // 当定义e_type的时候,内存分布就是:分配一个int字节.
#3
关于内存分布
是不是这样 一个enum就是一个字节,之所以有多个元素及其关系,完全是由语言规则和编译器来实现的。编译器来判断这个enum有多少个元素,来决定某个元素的取值。
ENUM的元素的取值其实都是常量,编译器会在把被引用元素替换为数值
对于enum{a,b,c,d}的每个元素,其实跟
#define a 0
#define b 1
是一样的。
而结构体中的数据值都是由CPU运算出来的,是变量。
关于有符号还是无符号
我原来是这么用的,enum {cmd=0x80000004}
我对各种进制是不熟悉的。
0x80000001本来就是一个负数吗????
从VC变量监视器里看,cmd的值是-2147483647.
当然,把cmd赋值给一个无符号整型 unsigned int iCmd=cmd;
iCmd的值变成了2147483649。
有符号32位 的范围是 -2 147 483 648~2 147 483 647
是不是我这样定义enum {a=1,cmd=0x80000004} cmd的值就是2147483649了呢?
是不是这样 一个enum就是一个字节,之所以有多个元素及其关系,完全是由语言规则和编译器来实现的。编译器来判断这个enum有多少个元素,来决定某个元素的取值。
ENUM的元素的取值其实都是常量,编译器会在把被引用元素替换为数值
对于enum{a,b,c,d}的每个元素,其实跟
#define a 0
#define b 1
是一样的。
而结构体中的数据值都是由CPU运算出来的,是变量。
关于有符号还是无符号
我原来是这么用的,enum {cmd=0x80000004}
我对各种进制是不熟悉的。
0x80000001本来就是一个负数吗????
从VC变量监视器里看,cmd的值是-2147483647.
当然,把cmd赋值给一个无符号整型 unsigned int iCmd=cmd;
iCmd的值变成了2147483649。
有符号32位 的范围是 -2 147 483 648~2 147 483 647
是不是我这样定义enum {a=1,cmd=0x80000004} cmd的值就是2147483649了呢?
#4
32位系统的enum默认都是32位,方便操作与位对齐,即使是bool型也是一样
#5
bool是1字节 8位。
#6
up
#7
enum就是int型的常量.
enum {a=1,cmd=0x80000004} cmd还是负的.
c语言没有bool类型,
都是enum bool(false,true);这样false,true也是int类型的常量值0,1;
enum {a=1,cmd=0x80000004} cmd还是负的.
c语言没有bool类型,
都是enum bool(false,true);这样false,true也是int类型的常量值0,1;
#1
enum{a=1,b,c,d} 这样后面的数据就都是>0 的,
然后使用的使用赋值给 无符号整数就是了 .....
内存结构,
我的理解是有些接近 int,
枚举值就是 int值,
一个枚举变量赋值, 就相当于是一个int赋值,
只是 int 赋值在整数范围都是可以的,
而 枚举赋值就是被枚举的几个值可以被赋值 ...
理解的不对勿怪勿怪。
然后使用的使用赋值给 无符号整数就是了 .....
内存结构,
我的理解是有些接近 int,
枚举值就是 int值,
一个枚举变量赋值, 就相当于是一个int赋值,
只是 int 赋值在整数范围都是可以的,
而 枚举赋值就是被枚举的几个值可以被赋值 ...
理解的不对勿怪勿怪。
#2
typedef enum tagE_TYPE {
a, b, c, d, e
} E_TYPE;
1.
默认就是无符号整型,除非你定义的时候写成a = -1, b, c, ...
2.
E_TYPE e_type = b; // 当定义e_type的时候,内存分布就是:分配一个int字节.
a, b, c, d, e
} E_TYPE;
1.
默认就是无符号整型,除非你定义的时候写成a = -1, b, c, ...
2.
E_TYPE e_type = b; // 当定义e_type的时候,内存分布就是:分配一个int字节.
#3
关于内存分布
是不是这样 一个enum就是一个字节,之所以有多个元素及其关系,完全是由语言规则和编译器来实现的。编译器来判断这个enum有多少个元素,来决定某个元素的取值。
ENUM的元素的取值其实都是常量,编译器会在把被引用元素替换为数值
对于enum{a,b,c,d}的每个元素,其实跟
#define a 0
#define b 1
是一样的。
而结构体中的数据值都是由CPU运算出来的,是变量。
关于有符号还是无符号
我原来是这么用的,enum {cmd=0x80000004}
我对各种进制是不熟悉的。
0x80000001本来就是一个负数吗????
从VC变量监视器里看,cmd的值是-2147483647.
当然,把cmd赋值给一个无符号整型 unsigned int iCmd=cmd;
iCmd的值变成了2147483649。
有符号32位 的范围是 -2 147 483 648~2 147 483 647
是不是我这样定义enum {a=1,cmd=0x80000004} cmd的值就是2147483649了呢?
是不是这样 一个enum就是一个字节,之所以有多个元素及其关系,完全是由语言规则和编译器来实现的。编译器来判断这个enum有多少个元素,来决定某个元素的取值。
ENUM的元素的取值其实都是常量,编译器会在把被引用元素替换为数值
对于enum{a,b,c,d}的每个元素,其实跟
#define a 0
#define b 1
是一样的。
而结构体中的数据值都是由CPU运算出来的,是变量。
关于有符号还是无符号
我原来是这么用的,enum {cmd=0x80000004}
我对各种进制是不熟悉的。
0x80000001本来就是一个负数吗????
从VC变量监视器里看,cmd的值是-2147483647.
当然,把cmd赋值给一个无符号整型 unsigned int iCmd=cmd;
iCmd的值变成了2147483649。
有符号32位 的范围是 -2 147 483 648~2 147 483 647
是不是我这样定义enum {a=1,cmd=0x80000004} cmd的值就是2147483649了呢?
#4
32位系统的enum默认都是32位,方便操作与位对齐,即使是bool型也是一样
#5
bool是1字节 8位。
#6
up
#7
enum就是int型的常量.
enum {a=1,cmd=0x80000004} cmd还是负的.
c语言没有bool类型,
都是enum bool(false,true);这样false,true也是int类型的常量值0,1;
enum {a=1,cmd=0x80000004} cmd还是负的.
c语言没有bool类型,
都是enum bool(false,true);这样false,true也是int类型的常量值0,1;