运算符运算问题和舍入误差问题
#include <stdio.h>void main()
{
int i=8,j=5,k=5,J=5,K=5,p,q,a,b;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",-i++);
printf("%d\n",-i--);
p=j+++j+++j++;
q=(++k)+++k+++k;
a=(J++)+(J++)+(J++);
b=(++K)+(++K)+(++K);
printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",p,q,j,k,a,b,J,K);
}
中的b值为什么为22,我自己算出来应该是21
#include <stdio.h>
void main()
{
float PI=3.14159;
int r=5;
float s;
s=r*r*PI;
printf("s=%d\n",s);
}
s我无论定义为单精度浮点型float还是双精度浮点型得出来的结果都是s=1342177280,这是舍入误差导致的还是什么其他原因,要怎么解决 1. 自己再算下,机器肯定没理解错
2. printf("s=%d\n",s);这句改为printf("s=%f\n",s); b=(++K)+(++K)+(++K);
优先级先算括号里的再相加,应该是8+8+8=24;
编译器不同的,结果不一样。 jhq999 发表于 2021-9-23 09:54
优先级先算括号里的再相加,应该是8+8+8=24;
编译器不同的,结果不一样。
你这话说的对吗?结果也和编译有关?又不是sizeof() 解答一下第二个吧,如果是float型数据,格式化输出用%f,如果是double型数据,格式化输出用%lf.
页:
[1]