① 表达式中参与除法
printf(“%f”, 5/2);
两个都是 int → 计算结果是 int → 2
最后转为 double → 2.000000
不丢精度的写法应为:
printf(“%f”, 5/2.0); // 2.500000
② char 溢出
char c = 130;
printf(“%d\n”, c); // -126(有符号 char 溢出)
③ uint 与 int 混算
unsigned int a = 100;
int b = -200;
printf(“%d\n”, a+b); // b 转无符号 → 巨大正数
发表回复