C语言类型转换优先级
最近在工作中遇到了一个溢出问题。问题是这样:
#include <stdio.h>
#include <stdlib.h>
typedef signed long long I64;
typedef unsigned long long U64;
typedef double F64;
int main()
{
F64 amount1 = -4000000;
U64 volume = 2;
I64 res1 = amount1 / volume;
printf("res1:%lld\n", res1);
I64 amount2 = -4000000;
I64 res2 = amount2 / volume;
printf("res2:%lld\n", res2);
I64 res3 = amount2 / (I64)volume;
printf("res3:%lld\n", res3);
return 0;
}
输出结果为:
res1:-2000000
res2:9223372036852775808
res3:-2000000
可以看出类型转换的优先级为:
F64 > U64 > I64
评论
0 评论