c++ 和 java不一样的地方

图片说明
像图片所示,先在循环外声明i变量,再在for循环里声明的局部变量i会把原来的i覆盖掉。运行结果图片说明

然后在java里面这样的声明变量是不允许的。图片说明

好像是因为作用域的问题,for循环的()里声明的变量是在花括号外的,所以会造成同个作用域有两个相同变量的问题。

那么为什么C++可以呢。

那要是俩语言完全一样就不会产生第二个了