<s>C语言Switch语句</s>
<s>建议楼主在使用系统接口时，先熟知其定义及返回值；如scanf的函数原型为： int scanf(const char * restrict format,...); 它的返回值定义如下： scanf函数返回成功读入的数据项数，读入数据时遇到了“文件结束”则返回EOF；当返回0时，表示实际没有成功读入对应数据。</s><s>回到楼主的测试代码，我稍微修改了，一下子就能发现问题了：注意有2个问题，一是a未初始化，而是未判断scanf的返回值；#include <stdio.h> void main(void) { int a; //这里定义a是未初始化的，理论上它的值是随机的 int ret; printf("1=====a=%d\n", a); printf("请输入: "); ret= scanf("%d",&a); //注意判断scanf的返回值 printf("2=====a=%d， scanf ret=%d\n", a, ret); switch(a) { case 1: printf("输入了1。</s><s>\r\n"); break; case 0: printf("输入了0。</s><s>\r\n"); break; default : printf("输入错误!\r\n"); break; } } 修正后的测试代码如下： void main(void) { int a = -1; //这里定义a时初始化为-1 int ret; printf("1=====a=%d\n", a); printf("请输入: "); ret= scanf("%d",&a); //注意判断scanf的返回值 printf("2=====a=%d， scanf ret=%d\n", a, ret); if (ret != 1) { //判断scanf的返回值，当ret不为1时(读入1个整数)，表示输入错误 printf("输入错误!\r\n"); return; } switch(a) { case 1: printf("输入了1。</s><s>\r\n"); break; case 0: printf("输入了0。</s><s>\r\n"); break; default : printf("输入错误!\r\n"); break; } } 测试记录如下： root@liluchang-ubuntu:/share/llc/test_scanf# ./test_scanf 1=====a=-1 请输入: 777777777 2=====a=777777777， scanf ret=1 输入错误!</s><s>root@liluchang-ubuntu:/share/llc/test_scanf# ./test_scanf 1=====a=-1 请输入: 1 2=====a=1， scanf ret=1 输入了1。</s><s>root@liluchang-ubuntu:/share/llc/test_scanf# ./test_scanf 1=====a=-1 请输入: 0 2=====a=0， scanf ret=1 输入了0。</s><s>root@liluchang-ubuntu:/share/llc/test_scanf# ./test_scanf 1=====a=-1 请输入: gggggg 2=====a=-1， scanf ret=0 输入错误!</s><s>测试案例输入很大的整数、字符串、数字1和输0，均能得到预期效果。</s>
