请教高手一个C语言运算(可能是数据类型)的问题
void cons_calc(int ID) {unsigned int A_cnt;
long C_sum;
unsigned int C_sum_H , C_sum_L, C_sum_test_H , C_sum_test_L;
long C_sum_test;
......
......
......
A_cnt = 10;
......
......
......
C_sum = A_cnt *61380; //正确结果应为613800或0x95DA8
C_sum_H = (C_sum >>16); //高16位
C_sum_L = (C_sum ); //低16位
C_sum_test = 10*61380;
C_sum_test_H = (C_sum_test >>16); //高16位
C_sum_test_L = (C_sum_test ); //低16位
......
......
......
}
按理说,C_sum 低16位C_sum_L输出 正确,高16位C_sum_H应为9,可实际却输出为-11(16进制察看是FFF5),为何会输出这样的结果?
而为什么立即数C_sum_test = 10*61380;运算时,C_sum_test _H的结果却是对的?(C_sum_test _H经验证为9)