#include <stdio.h>
#define SWITCH(a, b) char _a = a; char _b = b; if (0)
#define CASE(a, b) } else if ((a == _a) && (b == _b)) {
int main(void)
{
char play1, play2;
printf("\nPlayer 1 - Enter your Play:");
scanf ("%c", &play1);
getchar();
printf("\nPlayer 2 - Enter your Play:");
scanf ("%c", &play2);
getchar();
SWITCH(play1, play2) {
CASE('R','P') printf ("Paper wins!");
CASE('R','S') printf ("Rock wins!");
CASE('R','R') printf ("Draw!");
}
return 0;
}
这是个玩笑:P
编辑:“:”的大小写支持
#define PASTE(a, b) a##b
#define LABEL(a, b) PASTE(a, b)
#define SWITCH(a, b) char _a = a; char _b = b; if (0)
#define CASE(a, b) } else if ((a == _a) && (b == _b)) { LABEL(LBL, __LINE__)
但不适用于:
CASE('R','R'): printf ("Draw a!"); CASE('S','R'): printf ("Draw!");
同一行的两个案例
使用以下方法解决:
#define SWITCH(a, b) char _a = a; char _b = b; if (0)
#define CASE(a, b) } else if ((a == _a) && (b == _b)) {switch(1) case 1
希望没人用:)