c++ - 为什么一个变量的值与另一个值相同
问题描述
所以函数“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;
}
解决方案
从默认初始化读取int
是未定义的行为,因为它具有不确定的值。
从 读取时secret
,编译器可能正在从恰好保存 的值的寄存器中读取值x
。
无论如何,这不是您可以依赖的行为,即使在同一台机器上,使用相同的编译器,使用相同的编译标志等。
推荐阅读
- flutter - 如果 image.network 离线,如何使用本地图像
- dart - 如何在 MacOS 中将 dart 升级到 2.10.2
- python-3.x - 尝试使用 python3 和 Beautiful Soup 为戴尔驱动程序创建网络爬虫
- nodes - 我的 Chainlink 工作没有被调用。我可能做错了什么?
- vuetify.js - vuetify 的 v-list-group 和 v-list-item-group 组件有什么区别?
- c# - 如何构建从 Windows PowerShell 或 PowerShell ISE 调用的 Visual Studio 2019 C# 解决方案命令行
- javascript - 函数不从本地主机提取输入数据
- laravel - 如何在生产服务器中设置 browsersync
- github - 我正在尝试返回 Github 中的特定提交以消除我犯的错误
- java - 将字母映射到电话键盘上的数字