wjp 发表于 2017-12-26 19:26:56

关于switch case 问题

#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
int main(int argc, char* argv[])
{
        int array={0};
        array=2;
        array=2;
        array=2;
        int x,y,z,l;
        system("color f4");
        for(int i=0;i<25;i++)
        {
                for(int j=0;j<35;j++)
                {
                        if(i==0)
                                array=5;
                        if(i==24)
                                array=5;
                        if(j==0)
                                array=5;
                        if(j==34)
                                array=5;
                        if(array==5)
                                printf("□");
                        else if(array==2)
                                printf("■");
                        else
                                printf("");
                }
                printf("\n");
        }
   while(1)
                {
                        switch(array)
                        {
                        case 1:
                                array=1;
                                break;
                        case 2:
                                array=2;
                                break;
                        case 3:
                                array=3;
                                break;
                        case 4:
                                array=4;
                                break;
                                }
            switch(array)
                        {
                        case 1:
                                array=0;
                                        z--;
                                break;
                        case 2:
                                array=0;
                                z++;
                                break;
                        case 3:
                                array=0;
                                l--;
                                break;
                        case 4:
                                array=0;
                                l++;
                                break;
                        }
    for(int i=0;i<25;i++)
        {
                for(int j=0;j<35;j++)
                {
                        if(array==5)
                                printf("□");
                        else if(array==2)
                                printf("■");
                        else
                                printf("");
                }
                printf("\n");
        }
      Sleep(1000);
                }
        return 0;
}
switch这么用有什么问题吗 ? 编译没错误运行时提示内存不能为read

BngThea 发表于 2017-12-26 21:10:51

跟代码无关

sp1ral 发表于 2017-12-27 10:43:27

你查查,应该有地方数组越界访问了

新建word 发表于 2017-12-27 23:25:26

请问你代码 贴全了么?请问 xy在哪初始化了, 另外你确定 编译器没有报错,二维数组你用 数组的方式取访问 编译器 不会报错么?

类似这个位置
   if(j==0)
                              array=5;
或者这个位置
if(j==34)
                              array=5;

wjp 发表于 2017-12-29 10:46:38

sp1ral 发表于 2017-12-27 10:43
你查查,应该有地方数组越界访问了

根据你的提示看了下switch里面数组确实会越界,不过我用if限制x,y,的值还是会提示内存不能为read,是我方法不对还是不能把switch这么用呀

wjp 发表于 2017-12-29 10:49:12

新建word 发表于 2017-12-27 23:25
请问你代码 贴全了么?请问 xy在哪初始化了, 另外你确定 编译器没有报错,二维数组你用 数组的方式 ...

有定义呀system上面,我是用二维数组的方式访问的呀array【0】【y】我是这样访问的

wjp 发表于 2017-12-29 10:50:12

BngThea 发表于 2017-12-26 21:10
跟代码无关

就是运行到switch那出错,楼下提示了下,哪里无线循环是会数组越界
页: [1]
查看完整版本: 关于switch case 问题