source

전원 오퍼레이터(^)가 작동하지 않는 이유는 무엇입니까?

gigabyte 2022. 8. 18. 23:46
반응형

전원 오퍼레이터(^)가 작동하지 않는 이유는 무엇입니까?

#include <stdio.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 += result;
    }
    printf("%d\n", sum);
}

왜?^파워 오퍼레이터로 일하지 않는가?

음, 먼저,^C/C++의 연산자는 비트 단위 XOR입니다.파워와는 아무 상관이 없어요

이제, 사용상의 문제에 대해서pow()함수, 일부 구글링에서는 인수 중 하나를 두 배로 하는 것이 도움이 된다는 것을 보여줍니다.

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

그 결과도 다음 사람에게 전달한다는 점에 유의해 주세요.int전체적으로pow()과부하가 이중으로 반환되지 않음intMS 컴파일러가 없어서 위의 코드를 확인할 수 없었습니다.

C99 이후로는, 와 라고 불리는 함수도 있습니다(도움이 되는 경우).

주식회사^는 비트 단위 XOR 입니다.

0101 ^ 1100 = 1001 // in binary

멱승 연산자는 없습니다. math.h의 함수(또는 다른 유사한 함수)를 사용해야 합니다.

result = pow( a, i );

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;
     }`

math.h를 포함하여 gcc test.c -lm을 사용하여 컴파일합니다.

를 사용할 방법이 없습니다.^(비트 단위 XOR) 연산자: 숫자의 검정력을 계산합니다.따라서 숫자의 거듭제곱을 계산하려면 while loop 또는 pow() 함수를 사용합니다.

1. while loop을 사용합니다.

#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;
}
     

기준 2의 검정력을 계산하려는 경우 비트 이동 연산자를 사용하여 검정력을 계산할 수 있습니다.예를 들어, 2의 8제곱을 계산하려고 합니다.

2 << 7

일단은^ 는 Bitwise XOR 오퍼레이터입니다.

다른 것을 사용하여 임의의 수의 검정력을 구할 수 있습니다.루프를 사용하여 임의의 수의 전력을 구할 수 있습니다.

여기 x^y를 찾는 프로그램이 있습니다.xy.

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() 함수를 사용하여 임의의 수의 거듭제곱을 구할 수도 있습니다.

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

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

실제로는 pow(숫자, power);를 사용해야 합니다.아쉽게도 캐럿은 C에서 전원 기호 역할을 하지 않습니다.많은 경우, 당신이 다른 언어로 무언가를 할 수 없다는 것을 알게 된다면, 그것은 당신에게 그것을 해주는 다른 기능이 있기 때문이다.

pow()는 와 함께 동작하지 않습니다.int에러 C2668:'pow':오버로드된 함수에 대한 모호한 호출'이 표시됩니다.

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

자신의 멱함수를 기입하다ints:

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

언급URL : https://stackoverflow.com/questions/4843304/why-is-my-power-operator-not-working

반응형