枚举值的疑问?

发布于 2024-08-29 19:42:26 字数 426 浏览 4 评论 0原文

有没有可能对枚举值进行算术运算?

enum Type{Zero=0,One,Two,Three,Four,Five,Six,Seven,Eight,Nine};

main()
{
    enum Type Var = Zero;

    for(int i=0;i<10;i++)
    {
        switch(Var)
        {
            case Zero:
                /*do something*/
            case One:
                /*Do something*/
            .....
        }
        Var++;
    }
}

(我知道这个增量是不可能的,但是我们是否可以将这个变量命名为 Var 增量?)

Is there any possible way to do any arithmetic operations on enum values?

enum Type{Zero=0,One,Two,Three,Four,Five,Six,Seven,Eight,Nine};

main()
{
    enum Type Var = Zero;

    for(int i=0;i<10;i++)
    {
        switch(Var)
        {
            case Zero:
                /*do something*/
            case One:
                /*Do something*/
            .....
        }
        Var++;
    }
}

(I know that this increment is not possible, but is there anyway by which we can have this variable named Var increment?)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半窗疏影 2024-09-05 19:42:26

当然,您可以直接转换为 int 并返回:

var = (Type) ((int) var + 1);

You can just cast to int and back, of course:

var = (Type) ((int) var + 1);
倥絔 2024-09-05 19:42:26

是的,您可以在算术运算中使用枚举类型。尝试以下代码。

if (Two + Two == Four)
{
    printf("2 + 2 = 4\n");
}

您可以替换您正在使用的 for 循环,

enum Type i;
for(i=Zero; i<=Nine; i=(enum Type)(i + One))
{
    printf("%d\n", i);
}

一般来说,我不容忍这种滑稽的枚举,但对于枚举元素是整数的特殊情况,它是有效的。

Yes, you can use enum types in arithmetic operations. Try the following code.

if (Two + Two == Four)
{
    printf("2 + 2 = 4\n");
}

You could replace the for loop that you are using with,

enum Type i;
for(i=Zero; i<=Nine; i=(enum Type)(i + One))
{
    printf("%d\n", i);
}

I do not condone such antics for enums in general, but for your particular case where the elements of the enum are integers, it works.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文