程序如下:
void main(void) {
int a;
a=100;
}
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
程序如下:
void main(void) {
int a;
a=100;
}
囧 说:如何判断没有被执行的。如果没有使用,还有可能被优化器优化了。
就是a没有被赋值成100,程序停在赋值语句那边不动,找不到可执行的语句,加个volatile编译不会出现警告,但是最后也是执行不了赋值语句
会往下跑,我的情况是:很久没搞那程序和软件了,今天用的时候往上加了条类似的幅值语句发现它不运行囧 说:你的main函��只有这些吗?如果下面再加一个while(1); 会往下跑吗?
jianfa cai 说:你的main函��只有这些吗?如果下面再加一个while(1); 会往下跑吗?
[/quote]要是把变量的定义放在main函数之前声明成全局变量的话,后面那条赋值语句就可以正常编译了,不知道为什么会这样?
囧 说:如果你再定义一个b = 100, 然后在下面加一句a=a+b; 可以运行吗?
void main(void) {
int a,b,i;
a=100;
b=100;
for(i=0;i<10;i++)
b=a+b;
}
弄成这样还是不行,还是只能单步运行,全速运行会停住报错:No source available for "0x3ff62a" ,只有把int a,b,i;这条语句放在main函数之前把它定义成全局变量时全速运行才能输出正确的结果
囧 说:如果你再定义一个b = 100, 然后在下面加一句a=a+b; 可以运行吗?
int a,b;
void main(void) {
int i;
a=100;
b=100;
for(i=0;i<10;i++)
b=a+b;
}这样子全速运行也是可以得到结果的
int b;囧 说:如果你再定义一个b = 100, 然后在下面加一句a=a+b; 可以运行吗?
a显示not found的原因是,a是局部变量,你全速运行,只能观测全局变量的值,除非单步走进去才能看到局部变量的值,你之前的问题是所有的变量都是局部变量,所以在运行完后,又没有执行的语句,也没有保存的值,就会找不到地址。
Hank Zhao 说:这是正常现象,局部变量在函数结束后就会被释放,所以是not found,但全局变量不会被释放。如果定义的是局部变量,在程序结尾加一个死循环,同样可以正常显示。
好的。谢谢