Power Operator ^ 오용: 왜 상승하지 않습니까?
주어진 C 코드 조각에서:
#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); }
일반적으로 비트 XOR로 사용되는 ^ 연산자는 pow() 함수로 대체되어 지수를 계산합니다. 그러나 ^ 연산자를 사용함에도 불구하고 코드는 예상한 힘을 생성하지 못합니다.
^ 연산자 이해
C/C의 ^ 연산자는 주로 비트 XOR을 수행합니다. 이는 이를 전력 연산자로 해석하는 것을 배제합니다. 따라서 지수 계산에는 적합하지 않습니다.
해결 방법: pow() 함수를 올바르게 호출
문제를 해결하고 숫자를 거듭제곱으로 승격하려면 다음을 사용해야 합니다. pow() 함수. 그러나 pow() 함수를 사용할 때 캐스팅 문제가 발생합니다. 특히 인수 중 하나를 double로 캐스팅하면 문제가 해결됩니다.
result = (int) pow((double) a, i);
또한 pow() 함수는 기본적으로 double 값을 반환하므로 결과를 int로 캐스팅해야 합니다.
현대 C 변형
C99 이후에는 powf라는 이름의 float 및 long double 함수가 도입되었습니다. 각각 폴. 개발자는 인수 및 결과를 캐스팅하는 대신 이러한 기능을 활용할 수 있습니다.
위 내용은 C ^ 연산자가 지수화에 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!