Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#vs C默认枚举值_C#_C - Fatal编程技术网

C#vs 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中也是一样的。比

在这个网站上读了很多年(并且得到了很多有用的解决方案),现在是我问一个问题的时候了:)

我想知道默认的枚举值。我使用枚举将错误代码从MCU发送到PC(反之亦然)

这样定义枚举是一种好的做法(而且是安全的)

C:

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;