为什么我的电源操作员(^)不工作?

时间:2011-01-30 14:02:46

标签: c

#include "stdio.h"
#include "math.h"

void main(void)
{
    int a;
    int result;
    int sum=0;
    printf("Enter a Number : ");
    scanf("%d",&a);
    for(int i=1;i<=4;i++)
    {
        result = a^i;

        sum =sum+result;
    }
    printf("%d\n",sum);
}

我不知道为什么这个'^'不起作用。

10 个答案:

答案 0 :(得分:70)

嗯,首先,C / C ++中的^运算符是逐位XOR。它与权力无关。

现在,关于使用pow()函数的问题,some googling显示将其中一个参数转换为double有助于:

result = (int) pow((double) a,i);

请注意,我还将结果转换为int,因为所有pow()重载都返回double,而不是int。我没有可用的MS编译器,所以我无法检查上面的代码。

自C99 there are also float and long double functions called powf and powl respectively以来,如果有任何帮助。

答案 1 :(得分:62)

在C ^中是按位异或:

0101 ^ 1100 = 1001 // in binary

没有操作员的电源,你需要使用math.h中的pow函数(或其他类似函数):

result = pow( a, i );

答案 2 :(得分:6)

pow()不能与int一起使用,因此错误“错误C2668:'pow':模糊调用重载函数”

http://www.cplusplus.com/reference/clibrary/cmath/pow/

int s编写自己的幂函数:

int power(int base, int exp)
{
    int result = 1;
    while(exp) { result *= base; exp--; }
    return result;
}

答案 3 :(得分:3)

首先^Bitwise XOR operator 电力运营商。

您可以使用其他东西来查找任何数字的力量。您可以使用for loop to find power of any number

这是一个找到x ^ y的程序,即x y

double i, x, y, pow;

x = 2;
y = 5; 
pow = 1;
for(i=1; i<=y; i++)
{
    pow = pow * x;
}

printf("2^5 = %lf", pow);

您也可以使用pow() function to find power of any number

double power, x, y;
x = 2;
y = 5;
power = pow(x, y); /* include math.h header file */

printf("2^5 = %lf", power);

答案 4 :(得分:2)

包括math.h并使用gcc test.c -lm

进行编译

答案 5 :(得分:1)

你实际上必须使用pow(数量,力量);不幸的是,克拉不能用作C中的电源符号。很多时候,如果你发现自己无法用其他语言做某事,那就是因为有一个不同的功能可以帮助你。

答案 6 :(得分:1)

如果您正在尝试计算以 2 为底的幂,则可以使用按位移位运算符来计算幂。例如,假设您想计算 2 的 8 次方。

2 << 7

答案 7 :(得分:0)

无法使用^(按位XOR)运算符来计算数字的幂。 因此,为了计算数字的幂,我们有两种选择,要么使用while循环,要么使用pow() function

1。。使用while循环。

#include <stdio.h>

int main() {

    int base, expo;
    long long result = 1;

    printf("Enter a base no.: ");
    scanf("%d", &base);

    printf("Enter an exponent: ");
    scanf("%d", &expo);

    while (expo != 0) {
        result *= base;
        --expo;
    }

    printf("Answer = %lld", result);
    return 0;
}    
             

2。。使用pow()功能

#include <math.h>
#include <stdio.h>

int main() {

    double base, exp, result;

    printf("Enter a base number: ");
    scanf("%lf", &base);

    printf("Enter an exponent: ");
    scanf("%lf", &exp);

    // calculate the power of our input numbers
    result = pow(base, exp);

    printf("%.1lf^%.1lf = %.2lf", base, exp, result);

    return 0;
}
     

答案 8 :(得分:0)

它不起作用,因为 c 和 c++ 没有任何运算符来执行幂运算。

你可以做的是,你可以使用 math.h 库并使用 pow 函数。

`   #include<stdio.h>
    #include<math.h>
    int main(){
        int base = 3;
        int power = 5;
        pow(double(base), double(power));
        return 0;
     }`

答案 9 :(得分:-3)

使用'pow'函数代替使用^,这是一个执行Power操作的预定义函数,可以通过包含math.h头文件来使用它。

^此符号在C,C ++中执行BIT-WISE XOR操作。

a^i替换为pow(a,i)