ctypes を介して Python から呼び出された C 関数は間違った値を返します
ctypes を使用して Python から C 関数を呼び出す場合、正しく指定することが重要です。引数と戻り値の型を変更して、適切なデータ変換を保証します。そうしないと、不正な値が返される可能性があります。
あなたの場合、べき乗関数の戻り値の型を c_float として指定しましたが、引数の型を指定していません。引数のデフォルトの型は c_int であるため、Python は x 引数が整数であると想定しますが、そうではありません。
これを修正するには、引数の型も c_float として指定する必要があります。
functions.power.argtypes = [c_float, c_int]
この変更を行った後、power 関数を呼び出すと、期待される出力 125.0 が得られるはずです。 Python.
ctypes が Python と C の間でデータを正しく変換できるようにするには、引数の型と戻り値の型の両方を明示的に指定する必要があることに注意してください。これらの型のいずれかを指定しなかったり、スペルを間違えたりすると、未定義の動作が発生し、不正な動作が発生する可能性があります。返される値。
以上がctypes 経由で Python から呼び出された C 関数が間違った値を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。