#include <stdio.h>
int main(){
int i = 5;
{
int i = i;
printf("i=%d\n",i);
}
printf("i=%d\n",i);
}
我的想法是这样的,赋值运算符不是从右向左结合么,所以 i = i 时,右侧的 i 还是父块中 i ,左边的 i 被赋值,应该也等于 5 ,但此时已经是子块中的本地变量了。
不过觉得奇怪的是,输出结果是这样的:
i = 1
i = 5
我完全不理解这个 i=1 是怎么来的?我反复尝试了几次之后都是 i=1 ,我个人觉得就算我想的不对,那也应该报错或者是被赋一个乱七八糟的随机数,但是这个 1 。。。我是真的没想通。。
谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.