我在DRBD软件的开源代码文件中注意到这一点(user/drbdtool_common.c)
const char* shell_escape(const char* s)
{
/* ugly static buffer. so what. */
static char buffer[1024];
char *c = buffer;
if (s == NULL)
return s;
while (*s) {
if (buffer + sizeof(buffer) < c+2)
break;
switch(*s) {
/* set of 'clean' characters */
case '%': case '+': case '-': case '.': case '/':
case '0' ... '9':
case ':': case '=': case '@':
case 'A' ... 'Z':
case '_':
case 'a' ... 'z':
break; …Run Code Online (Sandbox Code Playgroud) 我的逻辑是:
if number is between 1 to 10, execute first case statement
if number is from 20 to 30, execute second case statement
Run Code Online (Sandbox Code Playgroud)
有没有下面的解决方案?
case '1' ... '10':
case '20' ... '30':
Run Code Online (Sandbox Code Playgroud) 我看到了一些像这样的c代码:int check = 10:
switch(check) {
case 1...9: printf("It is 2 to 9");break;
case 10: printf("It is 10");break;
}
Run Code Online (Sandbox Code Playgroud)
这case 1...9:是什么意思?它是标准的吗?
CASE expr_no_commas ELLIPSIS expr_no_commas ':'
Run Code Online (Sandbox Code Playgroud)
我在c的语法规则中看到了这样的规则,但是当我尝试重现它时:
int test(float i)
{
switch(i)
{
case 1.3:
printf("hi");
}
}
Run Code Online (Sandbox Code Playgroud)
它失败...
以下是我需要优化和计划的代码,以便切换到最佳状态.但我可以比较一下.所以我计划将comaparision(len> 3)作为默认情况.
如果我将比较部分(len> 3)作为默认情况并在swith中添加默认值,它会更快吗?
或者我如何将下面的代码作为switch语句?
if ( len > 3 ) {
which will happen more often;
}
else if ( len == 3 ) {
next case which may occur often;
} else if ( len == 2 ) {
the next priority case;
} else {
and this case occurs rarely;
}
Run Code Online (Sandbox Code Playgroud)