1、关于int32_t类型与整型和长整型的乘法
uint32_t a = 19609146; int64_t c = a * 512L; printf("aa = %d,bb = %ld,cc = %ld",a * 512,c,a * 512L);
结果为
aa = 1449948160,bb = 10039882752,cc = 10039882752
分析:
int32_t 与512乘,结果为整型,超过int32_t能表示的部分会被截断,即乘积会与int32_t的最大值取余
int32_t与512L相乘,结果为长整型,所以结果能正确表示
打印时,%ld为打印长整型,如果打印整型,编译报错