我正在使用 C,在我的程序中,我使用以下代码将变量从 double 类型转换为 int:
x1=(int)((x1+0.25)*2);
出于某种原因,我得到 x1 的值-2147483648.00
我究竟做错了什么?
完整代码:
#include <stdio.h>
int main(){
double x1=-10., y1=15.,x2=10.,y2=15.,t;
int i, Y=0,X=20,j;
char check;
do {
scanf("%c",&check);
if (check!='T')
break;
scanf("ime: %lf ( %lf, %lf), ( %lf, %lf)\n",&t,&x1,&y1,&x2,&y2);
printf("Time: %.1lf\n",t);
for (i=20; i>=Y; i--) {
printf("|");
for (j=-20; j<=X; j++) {
if (x1>0)
x1=(int)((x1+0.25)*2);
else if (x1<0)
x1=(int)((10-0.25)*2);
else
x1=0;
if (x2>0)
x2=(int)((x2+0.25)*2);
else if (x2<0)
x2=(int)((x2-0.25)*2);
else
x2=0;
(y1>0)?(y1=(int)(y1+0.5)):(y1=(int)(y1-0.5));
(y2>0)?(y2=(int)(y2+0.5)):(y2=(int)(y2-0.5));
if ((x1==x2)&&(x2==j)&&(y1==y2)&&(y2==i))
printf("*");
else if ((x1==j) && (y1==i))
printf("1");
else if ((x2==j) && (y2==i))
printf("2");
else
printf(" ");
}
printf("|\n");
}
for (i=0;i<43;i++)
printf("-");
printf("\n");
printf ("x1=%.2lf, y1=%.2lf, x2=%.2lf, y2=%.2lf",x1,y1,x2,y2);
printf("\n");
}
while (check=='T');
return 0;
}
输入: 没有星号和空格
Time: 0.00 ( -10.00, 20.00), ( 10.00, 20.00)
Time: 0.10 ( -8.00, 14.95), ( 8.00, 14.95)
Time: 0.20 ( -6.00, 14.80), ( 6.00, 14.80)
Time: 0.30 ( -4.00, 14.56), ( 4.00, 14.56)
Time: 0.40 ( -2.00, 14.22), ( 2.00, 14.22)
Time: 0.50 ( 0.00, 13.77), ( 0.00, 13.77)
Boom!