[英]#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.