话说为什么在主函数中下面一段代码可以运行,
#include
#include
int main()
{
int a = 0x5;
int i,sum=0;
int b = 0;
int c = 0;
for ( i = 1; i <= 8; i++ )
{
printf("%x\n",a);
c = a&0x0000000f;
if ( i == 8)
{
if( c == 1)
break;
}
sum += c * pow(10,i-1);
printf("%d\n", sum);
a = a>>4;
}
if ( c == 1)
{
printf("-%d", sum);
}
else
{
printf("%d", sum);
}
}
可是用函数模块就出现错误呢?
/* 编写一个函数,转换BCD编码二进制数为整型数。比如0x00001234转换为1234。*/
INT32 fun_two( INT32 i32_a)
{
INT32 i32_i = 0, i32_c = 0, i32_sum = 0;
for ( i32_i = 1; i32_i <= 8; i32_i++)
{
i32_c = i32_a & 0x0000000f;/* 取最后一位 */
if ( i32_i == 8)
{
if ( i32_c == 1)
break;
}
i32_sum += i32_c * pow(10, (i32_i - 1));
i32_a = i32_a >> 4;/* 向左移四位 */
}
if ( i32_c == 1) /* 判读符号位 */
{
OSM_Printf("-%d\n", i32_sum);
}
else
{
OSM_Printf("%d\n", i32_sum);
}
}
这个运行的结果却不一样呢?
在调试的情况发现这里我在传参的时候 用十六进制,但是到函数内部的时候就会变为十进制了,不知道怎样可以解决这个问题呢?