C#vs C默认枚举值
在这个网站上读了很多年(并且得到了很多有用的解决方案),现在是我问一个问题的时候了:) 我想知道默认的枚举值。我使用枚举将错误代码从MCU发送到PC(反之亦然) 这样定义枚举是一种好的做法(而且是安全的) C: C# 在传输之前,所有枚举值都被强制转换为C#vs C默认枚举值,c#,c,C#,C,在这个网站上读了很多年(并且得到了很多有用的解决方案),现在是我问一个问题的时候了:) 我想知道默认的枚举值。我使用枚举将错误代码从MCU发送到PC(反之亦然) 这样定义枚举是一种好的做法(而且是安全的) C: C# 在传输之前,所有枚举值都被强制转换为Uint32。 我是否可以始终假定C和C侧的error_1=1和error_2=2 我正在使用GCC编译器。在C中是的#如果以0开始枚举,则连续枚举应为连续数字。在您的示例中,如果no_error=0,则error_1将为1。在C中也是一样的。比
Uint32
。
我是否可以始终假定C和C侧的error_1=1
和error_2=2
我正在使用GCC编译器。在C中是的#如果以0开始枚举,则连续枚举应为连续数字。在您的示例中,如果no_error=0,则error_1将为1。在C中也是一样的。比如说在C中
enum DAY
{
sunday = 0,
monday,
tuesday,
wednesday, ****/* wednesday is associated with 3 as Sunday is 0*/****
thursday,
friday
} workday;
是的,这两种语言都保证,如果不显式地将枚举值作为整数值,则它比上一个枚举值多出一个。这就是答案。是的,C#enum类型被故意禁用,以便在互操作中正常工作。从技术上讲,您需要注意枚举的基类型,实际上,对于C#和C,它都是32位的
int
。=0
在C#()中也是可选的,尽管它是可选的。
enum
{
no_error = 0,
error_1,
error_2,
}
enum DAY
{
sunday = 0,
monday,
tuesday,
wednesday, ****/* wednesday is associated with 3 as Sunday is 0*/****
thursday,
friday
} workday;