int main(void)
{
int a = 65;
char c = (char)a;
int m = 3.0/2;
printf("%c\n", c); // output: A
//printf("this %f\n", 5 / 2); //0.000000
printf("%f\n", (float)a); // output: 65.000000
printf("this %f\n", 5 / 2); //65.0000
printf("%f\n", 5.0 / 2); // output: 2.5000000
//printf("this %f\n", 5 / 2); 2.500
printf("%f\n", 5 / 2.0); // output: 2.5000000
//printf("this %f\n", 5 / 2); 2.5000
printf("%f\n", (float)5 / 2); // output: 2.5000000
//printf("this %f\n", 5 / 2); 2.500
printf("%f\n", 5 / (float)2); // output: 2.5000000
//printf("this %f\n", 5 / 2); 2.5000
printf("%f\n", (float)(5 / 2)); // output: 2.0000000 - we cast only after division and result was 2
//printf("this %f\n", 5 / 2); 2.0000000
printf("%f\n", 5.0 / 2); // output: 2.5000000
//printf("this %f\n", 5 / 2); 2.500
printf("%d\n", m); // output: 1
//printf("this %f\n", 5 / 2); 2.500
system("PAUSE");
return 0;
}
为什么每条评论中写的所有内容都发生了变化,为什么每条评论中都会发生这种变化? 例如,在第一条评论中,它是 0.00 为什么会发生这种情况以及如何修复它
最佳答案
问题是您通过使用错误的格式说明符调用未定义的行为。 5/2
将计算为 2
,类型为 int
,但您使用 %f
来打印它。您应该将 5/2
更改为 5.0/2
,使其成为 double
类型,或者使用 %d
打印它>.
printf("this %f\n", 5.0/ 2);
或
printf("this %d\n", 5 / 2);
关于c - 这里有什么问题?以及如何修复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53160622/