1、
#include<stdio.h>
intmain()
{
int a=1;
switch(a)
{
int b=20;
case 1:
printf("b is %d\n",b);
break;
default:
printf("b is %d\n",b);
break;
}
return 0;
}
我们以为进入switch后,变量b会被初始化,其实并不然,因为switch-case语句会把变量b的初始化直接就跳过了。所以,程序会输出一个随机的内存值。
void func( void )
{
int x;
switch ( x )
{
case 0 :
int i = 1; // error, skipped by case 1 跳过
i 的初始化 花括号要全部括起来{int i = 1; int j = 1}
{ int j = 1; } // ok, initialized in enclosing block
case 1 :
int k = 1; // ok, initialization not skipped
}
}
2、
#include<stdio.h>
int main()
{
char dummy[80];
printf("Enter a string:\n");
scanf("%[^r]",dummy);
printf("%s\n",dummy);
return 0;
}
假设:输入Hello, World 本例的输出是“Hello,
Wo”,scanf中的”%[^r]“是从中作梗的东西。意思是遇到字符r就结束了。