为什么imho缺少"case"缩进 - switch语句中的关键字被认为是好的风格?
没有"case"关键字的缩进似乎是关于每个IDE的默认格式化选项:
switch (i){
case 0:
break;
case 1:
break;
}
Run Code Online (Sandbox Code Playgroud)
虽然我发现这种格式更直观:
switch (i){
case 0:
break;
case 1:
break;
}
Run Code Online (Sandbox Code Playgroud)
这背后有一些逻辑吗,这让我望而却步?
可能重复:
代码有什么作用?
void duff(register char *to, register char *from, register int count)
{
register int n=(count+7)/8;
switch(count%8)
{
case 0: do{ *to++ = *from++;
case 7: *to++ = *from++;
case 6: *to++ = *from++;
case 5: *to++ = *from++;
case 4: *to++ = *from++;
case 3: *to++ = *from++;
case 2: *to++ = *from++;
case 1: *to++ = *from++;
}while( --n >0);
}
}
Run Code Online (Sandbox Code Playgroud)
以上是有效的C代码吗?如果是这样,它想要实现什么,为什么有人会像上面这样做?
可能的重复:
这个C代码做什么[Duff的设备]?
Duff的设备如何工作?
void duff(register char *to, register char *from, register int count)
{
register int n=(count+7)/8;
switch(count%8)
{
case 0:
do{
*to++ = *from++;
case 7: *to++ = *from++;
case 6: *to++ = *from++;
case 5: *to++ = *from++;
case 4: *to++ = *from++;
case 3: *to++ = *from++;
case 2: *to++ = *from++;
case 1: *to++ = *from++;
}while( --n >0);
}
}
Run Code Online (Sandbox Code Playgroud)
以上是有效的C代码吗?如果是这样,它想要实现什么,为什么有人会像上面这样做?
我知道它的基本概念是什么,但我在思考,并且我意识到,因此对于switch语句而言,它需要比一堆if语句更多的字符.
由于一个if语句有7个字符(不包括变量名,也没有包含它的内容,也没有代码),而switch语句有9个字符(相同的东西),因为单词"break",甚至没有它,"case:"这个词是5个字符,而if语句则是7个字符,所以它并不比if声明好多少!