请求各位能够解答一下

img


这里还是正常的

img


这为什么变-47了

img


这又-6了
但是我改a[3] a[7]什么的答案都是正常-48
请问这是为什么了?

a[2]开始都是未定义的部分,你相当于越界访问了,但是C对此不做限制,所以访问a[2]以后都会产生随机结果

‘0’是字符,其ASCII码才代表整型值,'0'的ASCII码是48,a[1]=7,所以相减是-41
第二种a[2]-'0'是不可以的,因为a总共就2个元素,a[2]代表取第三个元素,就是越界访问获得了一个垃圾值而已
第三种a[10]就更不靠谱了啊

int a[2]一共就2个元素,分别是a[0]和a[1],a[2]这么写就越界了,是一个随机的数

指针越界,你访问的是内存中一个随机数