大侠们,今日遇到一个奇怪问题,先贴代码如下:int t1 = 0, t2 = 0;//全局定义
//函数体里面:
func()
{
t1 += 10;
if(t1 > 12)
{//语句块1
t2 = 1;
}
if(t1 < 12)
{//语句块2
t2 = -1;
}
}
在debug模式下,程序运行至func函数里面时,当第一次判断t1值与12关系时,程序应该不执行语句块2,但是调试时发现,黄色箭头还会进入语句块1,接着进入语句块2;
第二次进入func函数时,原理上应该只执行语句块1,但是此时调试发现,黄色箭头还是会进入语句块2.
这个问题纠结了很久,最后发现通过观察语句块1、2的执行结果t2的值时发现了问题原因。第一次执行时,黄色箭头虽然进入了语句块1,但是并没有真的执行 t2 = 1;同样,第二次执行func时,黄色箭头虽进入了语句块2,但实际并未进行t2 = -1。
小弟不知道这个问题是CCS的BUG,还是编译器设置的有问题?我的编译器选项为:
-g -pdsw225 -fr"$(Proj_dir)\Debug" -i"..\include" -d"_DEBUG" -d"LARGE_MODEL" -ml -v28
|