我对编程很新,我只是找不到我的输出与所需输出不同的原因.这是我的代码:
#include<stdio.h>
float fallingDistance (int t);
int main () {
int t;
float result=0.0;
printf("t <seconds>\td <meters>\n");
for(t=1;t<=10;t++) {
result = fallingDistance (t);
printf("\t%d\t%.2f\n",t,result);
}
}
float fallingDistance (int t) {
const float Grav = 9.8;
float fallD = 0.5*Grav*(t^2);
return fallD;
}
Run Code Online (Sandbox Code Playgroud)
t=1
0.5*9.8*(1^2) = 4.90
0.5*9.8*(3) = 14.70
现在如果t = 1,fallD应该是0.5*9.8*(1 ^ 2)= 4.90,但输出是14.70.知道为什么吗?
xen*_*ros 10
在C中,没有^用于expotentation的运算符.使用Grav(t*t).但是没有语法错误,因为^是按位XOR运算符.它需要两个数字并对相应的位执行XOR.
例如,什么时候t=6 t^2会:
6: 110
2: 010
6^2: 100 which in dec is 4.
Run Code Online (Sandbox Code Playgroud)
您还可以使用库中的pow功能Math.可以在tutorialspoint上找到一些介绍.
按位XOR以下列方式工作:它采用两个数字的所有位并比较相同位置的位(从结束开始计数).差异标记为1,没有差异(相等)标记为0.
定义:
a b a^b
-----------
0 0 0
0 1 1
1 0 1
1 1 0
Run Code Online (Sandbox Code Playgroud)
例:
10 ^ 4 = 1010_2 ^ 100_2 = 1110_2 = 14 //_2 stands for binary
Run Code Online (Sandbox Code Playgroud)
因为:
1010
^ 100
-----
=1110
Run Code Online (Sandbox Code Playgroud)