在VS2022、X86、Debug的环境下,编译器不做任何优化的话,下⾯代码执⾏的结果是啥?
答案是:程序运行,死循环的打印“hehe”。
这里可能会有疑问,这里不是会越界吗,怎么死循环的打印“hehe”呢?
我们可以通过调试来观察一下:
通过调试我们可以看出,当我们把arr[i]改的时候i也变了,因为arr[12]的地址和i的地址是一样的,所以每次一道arr[12]的时候i就被改为0了,就永远不可能跳出这个循环。
我们再看一张图片
所以说这道题很巧妙,但凡换一种编译器,或者换一种环境都不一定会出现这种情况。