ホームページ >バックエンド開発 >C++ >C ^ 演算子が累乗に機能しないのはなぜですか?

C ^ 演算子が累乗に機能しないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-02 15:25:40248ブラウズ

Why Doesn't the C ^ Operator Work for Exponentiation?

力演算子 ^ 誤用: なぜ上昇しないのですか?

指定された 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。