- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经搜索了 c 中枚举的静态用法,然后我在这里发布这个主题。我是一名测试人员,我需要通过编写一个简单的程序来测试本地、静态、全局范围的枚举数据类型。
一个简单的静态变量可以很容易地测试,同样我需要测试静态枚举数据类型。
我写了一个简单的代码。需要你们的帮助。
#include<stdio.h>
enum day {sun=1,mon,tue,wed,thur,fri,sat};
static enum direction {UP,DOWN,RIGHT,LEFT};
int static_enum()
{
static enum direction dir = UP;
printf("dir = %d\n",dir);
dir++;
}
int main()
{
printf("\nsun = %d mon = %d tue = %d wed = %d thurs = %d fri = %d sat = %d\n",sun,mon,tue,wed,thur,fri,sat);
enum day fri = 25;
// now friday gets modified from 21 to 25 becasue we have re-assigned the value
printf("\nfri = %d\n",fri);
// now saturday will still have value 22
printf("\nsat = %d\n",sat);
printf("\n");
static_enum();
static_enum();
return 0;
}
让我知道代码是否测试枚举数据类型的静态功能。谢谢您
注意:我搜索的主题让我选择了 C# 或 Java。
最佳答案
静态存储类与对象的链接和存储相关。它实际上与对象的类型没有任何关系。
下面是(我认为)你的程序正在做什么的解释:
<小时/>enum day {sun=1,mon,tue,wed,thur,fri,sat};
这声明了一个带有标签名称 day
的枚举类型,并且还定义了一些枚举常量及其值。
static enum direction {UP,DOWN,RIGHT,LEFT};
这声明了一个带有标签名称 direction
的枚举类型,并且还定义了一些枚举常量及其值。
static
存储类在这里毫无意义,因为您没有为对象定义(分配存储)。
int static_enum()
{
static enum direction dir = UP;
printf("dir = %d\n",dir);
dir++;
}
这定义了一个名为 dir
的 block 范围对象类型 enum direction
。 static
存储类意味着该对象将在程序启动时分配和初始化,并且它将在函数调用之间保留其最后存储的值。
int main()
{
printf("\nsun = %d mon = %d tue = %d wed = %d thurs = %d fri = %d sat = %d\n",sun,mon,tue,wed,thur,fri,sat);
这将输出枚举常量的值。
enum day fri = 25;
这定义了一个名为 fri
的 block 范围对象类型 enum day
,初始化为值 25
。枚举常量也命名为 fri
在此 block 中将不再可见(除非您重新声明 enum day
)。
// now friday gets modified from 21 to 25 becasue we have re-assigned the value
printf("\nfri = %d\n",fri);
这会输出对象的值 fri
,不是枚举常量的值 fri
。没有任何修改。
// now saturday will still have value 22
printf("\nsat = %d\n",sat);
这输出枚举常量 sat
的值,正如预期的那样。
printf("\n");
static_enum();
static_enum();
return 0;
}
<小时/>
有人可能想知道为什么该语言允许 static
存储类位于 undefined object (为其分配存储)的声明中。我认为这只是一种语法上的便利,因为声明和定义共享相同的语法。 C 语法允许您堆积任意数量的存储类、类型说明符、类型限定符、函数说明符 和 对齐说明符 在声明中的顺序任意。然而,根据 C 标准的各个语义部分,许多组合是不允许的或导致未定义的行为。我不认为有什么可以禁止无意义的事情 static
direction
声明中的关键字.
关于c - C 中静态枚举的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27518540/
我是一名优秀的程序员,十分优秀!