C语言运行顺序和内存就地分配原则
不知道,为什么会出现这样的结果?
答:此问题从二个方面解答:
1> 编译器是上古三大神器的编译器之一,不带有任何只能辅助系统。
2>本程序在语法没有任何问题,但是根据C语言编译语句自上而下 和 内存就地分配原则。
详解:本程序在开始运行时, 内存依照就地分配原则就地割划内存空间为堆栈 运行本程序,请注意:被割划出来的内存空间仍然保存上次程序运行所产生的数值。 定义变量a,b,sum时,这个三个变量在堆栈里是有数值滴(即内存本身存储滴的无用数值),压数值入a,b后,变量a,b所在的内存数值变化//请注意此时的变量sum所在的内存里数值没有变化,还是无用数值// 输出a,b后,变量sum的数值没有变化// 因为运行程序是自上而下,所以sum=a+b是没有被运行滴// 故输出sum的值为 割划内存空间成堆栈时内存保留的垃圾值!
#include <stdio.h>
int main (void)
{
int a,b,sum;
{
int a,b,sum;
printf("请输入要进行运算的数值:\n");
scanf("%d%d",&a,&b);
printf("a=%d b=%d",a,b);
sum=a+b;
printf("sum = %d\n",sum);
return 0;
}