繁体   English   中英

#define 带有 switch 案例的语句

[英]#define statement with switch cases

有人可以解释下面的代码有什么问题。

#include <stdio.h>

#define WHOLE 256
#define FIRST 170
#define SECOND WHOLE - FIRST

int main()
{
    int data = -86;
    switch(data)
    {
        case -SECOND:
            {
                printf("Match\n");
            }
            break;
        default:
            {
                printf("Not Match %d\n", data);
            }
            break;
    }
    return 0;
}

期望 output 是匹配。 但实际的 output 是“不匹配 -86”。

在此先感谢您的帮助。

#define SECOND WHOLE - FIRST

        case -SECOND:

将扩大到

        case -WHOLE - FIRST:

在这里- case -SECOND仅适用于WHOLE

你应该使用

#define SECOND (WHOLE - FIRST)

反而。 (加括号)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM