关于监视窗口的问题

世上的光 2017-07-25 10:17:54
#include <iostream>
using namespace std;

int main() {
{
int a;
a = 6;{
int a;
a = 5;
}
}
}
当我在监视窗口 监视 第二个a 时,会出现 奇怪的问题, a 可能是一个奇怪的值
我想问 添加监视到底在监视什么?
...全文
283 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
世上的光 2017-08-14
  • 打赏
  • 举报
回复
引用 2 楼 cfjtaishan 的回复:
描述一下a这个奇怪的值是什么?随机值? 定义一个局部变量时,若定义时不赋值,则会a变量的内存空间里是一个随机值;
你好,谢谢您,通过调试我发现 所监视的只是 当前帧所在模块的某个 名字,而不是我所要监视的变量
世上的光 2017-08-14
  • 打赏
  • 举报
回复
引用 2 楼 cfjtaishan 的回复:
描述一下a这个奇怪的值是什么?随机值? 定义一个局部变量时,若定义时不赋值,则会a变量的内存空间里是一个随机值;
引用 1 楼 fight_in_dl 的回复:
引用
在监视什么?
用{}包含的代码称为代码块,在代码块中定义的变量是块的局部变量,其生存周期从定义开始一直到退出块。 这里注意,当进入里层代码块后,a会变成5,隐藏了外部块同名的a变量。 说了这么多,还是实际上机测试一下体会更深,修改代码如下:
int main()
{
	{
		int a;
		a = 6; //刚开始把断点设到这行,然后分步调试,在监视窗口中就能观察到a的变化
		printf("first a is %d\n", a);
		{
			int a;
			a = 5;
			printf("second a is %d\n", a);
		}
	}
	return 0;
}
同时可以在控制台窗口看一下程序运行结果。
你好,很感谢,很久才看到回复,我自己测试知道监视窗口只是监视当前帧所在语句块的 所要监视的“变量名字"的值,而不是我想要监视的变量。当时不明白这个原理,
赵4老师 2017-07-26
  • 打赏
  • 举报
回复
不要依赖调试器输出复杂数据结构!而要将复杂数据结构的整个内容在处理它的每一步使用一小段代码按自己很容易理解的格式输出,非常有助于调试!或者可以说是“基础设施”
trytry1992 2017-07-26
  • 打赏
  • 举报
回复
看不懂,这难道不会重定义
自信男孩 2017-07-26
  • 打赏
  • 举报
回复
描述一下a这个奇怪的值是什么?随机值? 定义一个局部变量时,若定义时不赋值,则会a变量的内存空间里是一个随机值;
战在春秋 2017-07-26
  • 打赏
  • 举报
回复
引用
在监视什么?
用{}包含的代码称为代码块,在代码块中定义的变量是块的局部变量,其生存周期从定义开始一直到退出块。 这里注意,当进入里层代码块后,a会变成5,隐藏了外部块同名的a变量。 说了这么多,还是实际上机测试一下体会更深,修改代码如下:
int main()
{
	{
		int a;
		a = 6; //刚开始把断点设到这行,然后分步调试,在监视窗口中就能观察到a的变化
		printf("first a is %d\n", a);
		{
			int a;
			a = 5;
			printf("second a is %d\n", a);
		}
	}
	return 0;
}
同时可以在控制台窗口看一下程序运行结果。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧