从double转换为整数变量

时间:2011-10-21 18:23:23

标签: casting integer double

我在Dev C ++ IDE中编写了这个程序。我原以为它可能会崩溃。但它显示正确的输出。有些人可以解释一下如何在这里分配内存。为什么这样做。

int main()
{
     int i=10;
     double d=3333333.555 ;
     i=d+d;
     printf(" Value of I after assignment %d",i);
     getch();
}

1 个答案:

答案 0 :(得分:0)

在C中,局部变量和参数保存在寄存器和堆栈中。这意味着只要您在堆栈中有可用空间,它们就会被放在那里,没有明确的分配。

实际上,所有程序都以默认分配的堆栈开头,这就是为什么C程序不需要更多内存的原因。

堆栈如何工作?嗯...一般来说,有一个寄存器用于保存指向一块内存的指针。无论何时进入函数,都会移动该寄存器,使其现在指向堆栈的空闲部分,当您离开该函数时,堆栈寄存器的旧值将被恢复。

内部工作更棘手,但这是一般的想法。