Top1: switch还能这样用?
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 0;
scanf("%d",&a);
switch(a)
{
case 0 ... 10:
printf("a = %d\n",a);
break;
case 11 ... 20:
printf("b = %d\n",a);
break;
default:
break;
}
return 0;
}
该语法虽未在C标准中提到,但事实是大多数编译器都能够支持。当多个连续的case需要执行同一功能的时候,这样写更直观,省事。
执行结果:
Top2: 三目运算符省略第二个表达式
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 5;
int b = 5;
int c = 5;
int d = 5;
printf("a=%d\n",a>0?:0);
printf("b=%d\n",b<0?:0);
printf("c=%d\n",c++?:0);
printf("d=%d\n",++d?:0);
return 0;
}
三目运算符缺省第二个表达式时,其缺省值即第一个表达式的值。
参考:https://blog.csdn.net/fangye945a/article/details/102751933
执行结果:
Top3:++遇上+,--遇上-
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 5;
int b = 6;
int c = a+++b;
int d = 4;
int e = 3;
int f = d---e;
printf("a = %d b = %d c = %d\n",a,b,c);
printf("d = %d e = %d f = %d\n",d,e,f);
return 0;
}
C语言贪心法则。参考: https://blog.csdn.net/yygydjkthh/article/details/4422811
执行结果:
Top4:sizeof()不参与运算
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 5;
int b = 5;
int c = sizeof(a++);
int d = sizeof(++b);
printf("a=%d b=%d c=%d d=%d\n",a,b,c,d);
return 0;
}
a++和++b并没有被执行。
执行结果: