首页 > 解决方案 > 为什么一个变量的值与另一个值相同

问题描述

所以函数“thinkOfANumber”给变量“x”的值是108。然后,我们进入函数“mindReading”,它的变量“secrets”没有被赋予任何值。但不知何故,它得到了与“x”相同的值。我的猜测是它与堆栈和内存有关。有人可以为我解释一下吗?

编码:

void thinkOfANumber(){
    int x = 108;
    printf( "This function thinks of a secret number (%d)\n", x);
}

void mindReading(){
    int secret;
    printf( "This function believes that the other functions secret is: %d!\n", secret); //Prints 108
}

void main(){
    thinkOfANumber();
    mindReading();
    return 0;
}

标签: c++

解决方案


从默认初始化读取int是未定义的行为,因为它具有不确定的值。

从 读取时secret,编译器可能正在从恰好保存 的值的寄存器中读取值x

无论如何,这不是您可以依赖的行为,即使在同一台机器上,使用相同的编译器,使用相同的编译标志等。


推荐阅读