力演算子 ^ 誤用: なぜ上昇しないのですか?
指定された 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() 関数を使用すると、キャストの課題が生じます。具体的には、引数の 1 つを double にキャストすると問題が解決します。
result = (int) pow((double) a, i);
さらに、pow() 関数はデフォルトで double 値を返すため、結果を int にキャストする必要があります。
モダン C バリエーション
C99 以降では、powf および long double 関数という名前の float 関数と long double 関数が導入されました。それぞれポール。開発者は、引数と結果をキャストする代わりにこれらの関数を利用できます。
以上がC ^ 演算子が累乗に機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。