У меня есть вопрос о ctypes в Python
from ctypes import *
printf = cdll.msvcrt.printf
printf("%s\n", "Hello World!")
printf("%d\n", 100)
printf("%f\n", 10.1)
Результат:
Hello World!
100
Traceback (most recent call last):
File "C:\Users\Windows7\Desktop\test.py", line 5, in <module>
printf("%f\n", 10.1)
ctypes.ArgumentError: argument 2: <type 'exceptions.TypeError'>: Don't know how to convert parameter 2
Я знаю, как исправить ошибку: 10.1 следует заменить на c_double(10.1)
, но зачем мне здесь использовать функцию c_double()
? Первые два printf
вообще не нуждаются в c_string()
или c_int()
.
И более того, это "% f", а не "% lf", поэтому я думаю, что если я должен использовать здесь функцию ctypes, я должен использовать c_float () вместо c_double, но когда я попробовал printf("%f", c_float(10.1))
, я получил неправильный результат: 0,000000, почему?