전원 오퍼레이터(^)가 작동하지 않는 이유는 무엇입니까?
#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()
과부하가 이중으로 반환되지 않음int
MS 컴파일러가 없어서 위의 코드를 확인할 수 없었습니다.
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
다른 것을 사용하여 임의의 수의 검정력을 구할 수 있습니다.루프를 사용하여 임의의 수의 전력을 구할 수 있습니다.
여기 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/
자신의 멱함수를 기입하다int
s:
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
'source' 카테고리의 다른 글
슬롯이 있는 동적 컴포넌트 (0) | 2022.08.18 |
---|---|
페이지 새로 고침 후 쿠키 저장소가 있는 Vuex 상태가 손실됨 (0) | 2022.08.18 |
Java 코멘트에서의 /** 및 /* (0) | 2022.08.18 |
스크롤 스파이 드롭다운이 아무것도 감시하지 않을 때 기본 텍스트로 업데이트하는 방법이 있습니까? (0) | 2022.08.18 |
시스템 위치: 1바이트!= 8비트? (0) | 2022.08.18 |