a是个指针的指针。然后第一个方括号表示对a的第一重指针减一,第二个方括号表示对a的第二重指针加1。不一定会报错的。比如假定一个二维数组A[10][10]如果此时的a=&A[2][1]就不会报错了。此时的a[-1][1]就等于A[1][2];
情况分两种不同编译器处理不一样
有的编译器会直接报错
有的编译器会把-1转成unsigned int 即FFFFF...FF ,运行的时候数组下标越界,程序终止了
不行,可能是编译器问题,才不报错,明显越界!
报错,下标越界。