|
发表于 2013-10-10 11:03:17
|
显示全部楼层
刚验证了下,IAR环境,两种计算结果是一样的。- #define LoadStartRight 0x06
- #define LoadStartWrong ((unsigned long)0x06)
- main()
- {
- unsigned long int right_addr_32;
- unsigned long int wrong_addr_32;
-
- unsigned char i,j;
- volatile unsigned int result_same,result_different;
-
- //变量清零
- result_same=0;
- result_different=0;
-
- //i,j均从0开始计数
- i=0;
- j=0;
- for(;i<255;)
- {
-
- //两种宏定义的表达式进行计算
- right_addr_32=(unsigned long)(LoadStartRight+0xffe0-0x2000+i*16);
- wrong_addr_32=LoadStartWrong+0xffe0-0x2000+j*16;
-
- i++;
- j++;
-
- //对两种表达式的结果进行比较,并且统计计数
- if(right_addr_32 == wrong_addr_32)
- {
- result_same++;
- }
- else
- {
- result_different++;
- }
-
- }
- //在此处设置断点,查看统计变量result_same和result_different的值
- result_same=result_same;
- result_different= result_different;
- }
复制代码 |
|