摘自Stephen著的“C编程(第4版)”一书
// Basic conversions in C
#include <stdio.h>
int main (void)
{
float f1 = 123.125, f2;
int i1, i2 = -150;
char c = 'a';
i1 = f1; // floating to integer conversion
printf("%f assigned to an int produces %i\n", f1, i1);
f1 = i2; // integer to floating conversion
printf("%i assigned to a float produces %f\n", i2, f1);
f1 = i2 / 100; // integer divided by integer
printf("%i divided by 100 produces %f\n", i2, f1);
f2 = i2 / 100.0; // integer divided by a float
printf("%i divided by 100.0 produces %f\n", i2, f2);
f2 = (float) i2 / 100; // type cast operator
printf("(float) %i divided by 100 produces %f\n", i2, f2);
return 0;
}我对编程很陌生,我试着从上面提到的书中学习如何用C语言编程。我看到了将整数转换为浮动的代码片段,反之亦然。我有点搞不懂到底发生了什么。
到目前为止,我理解的是:前几行(float f1 = 123.135, f2;和后面的两行)声明变量。
然后,行i1 = f1;将123.125的值分配给名为i1的变量,但由于i1是一个整数,因此它被截断为123。
下面是我的问题,在下一行f1 = i2;中,值-150被赋值给名为f1的变量,但是由于它是一个float,所以值被存储为浮点数,即-150.000000,但是123.125发生了什么呢?
这个值还存在于计算机内存的某个地方吗?如果是这样的话,我如何访问它?就像以前将该值赋值给f1时一样,我可以将其称为f1,但现在它不再被赋值给任何变量了,我能以某种方式引用它吗?
就像更广义的版本一样,如果我们将一个新值赋给一个变量,那么旧值会发生什么呢?
我曾在In python when we assign a new value to a variable what happens to the old one?上做过一次尝试,但在C中也是如此吗?
发布于 2021-12-31 08:26:28
在C中,变量是用来使内存更容易使用的名称。当将值赋值给变量时,该值将存储到对应于变量名称的内存中。
这意味着,在将新值存储到变量中时,旧值将被覆盖,因为变量仍然引用相同的内存。通常,第一个值不会以以后可以访问的任何方式保留。
现在,有一些“异国情调”的做事方式可能无法使这一说法100%真实。在写入新值时,有些系统(其中一些是用C实现的)确实保留了旧值(一般意义上)。然而,这类系统甚至在大多数C程序中都不存在,如果您使用的是C程序,您就会知道。
发布于 2021-12-31 08:46:59
,该值是否仍然存在于计算机内存中?
一般的答案是:不,一旦将一个新值赋值给一个变量,旧值就消失了,因此您无法访问它。
上面说..。
根据编译器的不同,初始化器(如您的123.125)可能是程序内存的一部分,因此值可能仍然在内存中的某个位置。但是,这并不重要,因为您不知道在哪里访问,因此无法访问它。所以对于任何实际用途,它已经消失了..。
发布于 2021-12-31 10:27:29
每当您创建一个变量并给它赋值,它就存储在内存中,但是当我们更改变量的值时,我们基本上是用新的value.so替换它,旧的值将从内存中移除。
https://stackoverflow.com/questions/70540301
复制相似问题