C盲夫 发表于 2014-10-19 13:32:06

C语言的a++运行后a变量的值

#include<stdio.h>
main()
{int a=3;
{printf("%d %d",-a++,a);
}
   printf("%d\n",a);
}
结果:
-3 3 4

局部变量a=3,而为什么全局变量a=4??
个人理解,局部变量中a=4才对啊,为什么结果不同
求局部变量与全局变量的区别,尽量详细。
若有所失礼,敬请原谅,谢谢合作

仰望天上的光 发表于 2014-10-19 16:26:38

1.这题只有局部变量,没有全局变量
2.不同的C语言编译器对这题的答案可能不同

Mr.屎壳螂 发表于 2014-10-19 17:08:47

我用VS2012 试了一下,结果是-3 4 4,跟你的那个还不一样.
至于你说的局部变量的话,这里的变量全是局部的,不是全局的,我理解的全局变量是程序中任何函数中,不用定义就可以直接调用的变量。在程序开头单独定义。
你可以看看这个
#include<stdio.h>

int b=3;
int main()
{
        inta=3;
                printf("%d %d %d\n",a,-a++,a);
                printf("%d %d %d\n",b,-++b,b);
                return 0;
}
int a 就是局部变量
int b 就是全局变量

C盲夫 发表于 2014-10-20 16:15:08

Mr.屎壳螂 发表于 2014-10-19 17:08
我用VS2012 试了一下,结果是-3 4 4,跟你的那个还不一样.
至于你说的局部变量的话,这里的变量全是局部的,不 ...

感谢你的解答:
      不过,鄙人是学C语言基础的,用VC++ 6.0 运行你提供的语句后,结果是:3 -3 3
                                                                                                         4 -4 3
       而运行鄙人本问题语句后,结果还是:-3 3 4。。。而且鄙人猜想是不是多了这“{} ”影响了输出结果
      还请多多指教

C盲夫 发表于 2014-10-20 16:19:23

仰望天上的光 发表于 2014-10-19 16:26
1.这题只有局部变量,没有全局变量
2.不同的C语言编译器对这题的答案可能不同

鄙人愚钝,再请教下,是因为局部变量让a变量变了吗?

仰望天上的光 发表于 2014-10-20 18:27:24

C盲夫 发表于 2014-10-20 16:19
鄙人愚钝,再请教下,是因为局部变量让a变量变了吗?

不是,你去找本好点的C语言书,看“表达式的值”和“表达式的副作用”就明白了。其实一般的C语言编程(就是自己编者解决问题玩的)不需要研究这些,这些东西只有考试的时候有用。

安静的渴 发表于 2014-10-20 20:31:11

多多指教

C盲夫 发表于 2014-10-21 11:44:37

仰望天上的光 发表于 2014-10-20 18:27
不是,你去找本好点的C语言书,看“表达式的值”和“表达式的副作用”就明白了。其实一般的C语言编程(就 ...

哦,谢谢

C盲夫 发表于 2014-10-21 11:54:58

仰望天上的光 发表于 2014-10-20 18:27
不是,你去找本好点的C语言书,看“表达式的值”和“表达式的副作用”就明白了。其实一般的C语言编程(就 ...

还有怎么把本问题调到已解决状态,谢谢帮助...
页: [1]
查看完整版本: C语言的a++运行后a变量的值