一小段代码;
为什么输出的值是不对,但是代码不报错呢;
代码
#include "stdio.h"
#define uint unsigned int
void main()
{
uint G1;
G1 = 28/(1-900/1800);
printf("%d ",G1);
}
运行结果
28;
尝试过
不知道是括号位置的问题,还是变量定义的问题,都修改过没有变化;
应该结果
实际输出应为56;希望指教如何修正
一小段代码;
为什么输出的值是不对,但是代码不报错呢;
#include "stdio.h"
#define uint unsigned int
void main()
{
uint G1;
G1 = 28/(1-900/1800);
printf("%d ",G1);
}
28;
不知道是括号位置的问题,还是变量定义的问题,都修改过没有变化;
实际输出应为56;希望指教如何修正
数据精度丢失的问题,
900/1800 操作符两边都是int,结果0.5 转为int,就是0 ,整个表达式变为28/(1-0) ->28
可以把加个小数点,明确指明是double,即可,整个表达式的结果都是double 56.0,然后类型转换int的56
希望能帮到你
#include <stdio.h>
#define uint unsigned int
int main()
{
uint G1,G2;
G1=28/(1-900/1800);
G2=28/(1-900.0/1800);
printf("G1=%d ,G2=%d \n",G1,G2);
printf("%d\n",900/1800);
printf("%llf\n",900/1800);
printf("%llf\n",900.0/1800);
printf("%llf\n",900/1800.0);
printf("%d\n",1-900/1800);
return 0;
}