【问题标题】:How does C ^ (dash) exponent operator work?C ^(破折号)指数运算符如何工作?
【发布时间】:2017-09-19 21:02:56
【问题描述】:

我对编程还很陌生,只是找不到输出与所需输出不同的原因。这是我的代码:

#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 calc


【解决方案1】:

在 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

【讨论】:

    猜你喜欢
    • 2017-11-30
    • 1970-01-01
    • 2019-06-21
    • 2021-11-18
    相关资源
    最近更新 更多