C语言中的并集与范围变量
我有几个问题。 我需要使用union编写一个包含一个字段的结构,该字段要么为空,要么为某种特定类型。它是哪一个应该由bool变量的值决定(在本例中为inRoom)。这就是我所拥有的:C语言中的并集与范围变量,c,struct,pascal,unions,C,Struct,Pascal,Unions,我有几个问题。 我需要使用union编写一个包含一个字段的结构,该字段要么为空,要么为某种特定类型。它是哪一个应该由bool变量的值决定(在本例中为inRoom)。这就是我所拥有的: typedef struct{}Unit; typedef struct{ Suspect currentPlayer; Dice dice; Bool inRoom; union{ Suggestion suggestion; Unit
typedef struct{}Unit;
typedef struct{
Suspect currentPlayer;
Dice dice;
Bool inRoom;
union{
Suggestion suggestion;
Unit suggestion;
}
}Turn;
现在,我明白了程序员应该知道他应该使用哪种类型。
这是否意味着这不是我可以放在结构声明中的东西,而是放在程序本身中?
这是定义工会的正确方式吗
第二个问题:
在pascal中,我可以定义一个只包含一系列数字的变量
Dice=2..12;
如何将其转换为C语言?我可以使用枚举:
typedef enum{2,3,4,5,6,7,8,9,10,11,12}
但这不会给我尝试做的任何算术带来问题吗?有没有更好的方法来定义C语言中的范围变量 对于第一个问题,实际的代码应该读取相应的bool,并解析相应的联合成员。请注意,这意味着您不能将联合的两个成员命名为同一名称,因为这样您就无法区分它们 因此,你应该改变:
Suggestion suggestion;
Unit suggestion;
差不多
Suggestion suggestion;
Unit unit;
我只使用int类型,注意值始终在2到12之间。在Pascal中,如果我没有记错的话,只要值超出范围,就会出现运行时错误。你没有任何范围检查,就像你没有任何数组边界检查一样。所以把它转换成C的最好方法是使用int,并加上必须检查输入的范围?(这不是课程的一部分,但更像是家庭作业中的一个理论问题)thanx。没想到