C ^(破折号)指数运算符如何工作?
How does C ^ (dash) exponent operator work?
我是编程新手,我就是找不到我的输出与预期输出不同的原因。这是我的代码:
#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;
}
我的输入是:
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。知道为什么吗?
在 C 中,没有 ^
运算符来求幂。使用 Grav(t*t)
。但是没有语法错误,因为 ^
是按位异或运算符。它取两个数字并对它们对应的位进行异或。
例如,当 t=6
t^2
将是:
6: 110
2: 010
6^2: 100 which in dec is 4.
您还可以使用 Math
库中的 pow
函数。可以在 tutorialspoint.
上找到一些介绍
按位异或按以下方式工作:它取两个数字的所有位并比较相同位置的位(从末尾开始计数)。有差异用1表示,没有差异(相等)用0表示。
定义:
a b a^b
-----------
0 0 0
0 1 1
1 0 1
1 1 0
示例:
10 ^ 4 = 1010_2 ^ 100_2 = 1110_2 = 14 //_2 stands for binary
因为:
1010
^ 100
-----
=1110
我是编程新手,我就是找不到我的输出与预期输出不同的原因。这是我的代码:
#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;
}
我的输入是:
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。知道为什么吗?
在 C 中,没有 ^
运算符来求幂。使用 Grav(t*t)
。但是没有语法错误,因为 ^
是按位异或运算符。它取两个数字并对它们对应的位进行异或。
例如,当 t=6
t^2
将是:
6: 110
2: 010
6^2: 100 which in dec is 4.
您还可以使用 Math
库中的 pow
函数。可以在 tutorialspoint.
按位异或按以下方式工作:它取两个数字的所有位并比较相同位置的位(从末尾开始计数)。有差异用1表示,没有差异(相等)用0表示。
定义:
a b a^b
-----------
0 0 0
0 1 1
1 0 1
1 1 0
示例:
10 ^ 4 = 1010_2 ^ 100_2 = 1110_2 = 14 //_2 stands for binary
因为:
1010
^ 100
-----
=1110