... 나는 C 코드파이썬 INT 오버 플로우
편집 다음 한하는 ctypes 함수를 호출 할 때 :이 알아 내려고 노력하고있어 이유는 this blog post 더 정확한 확인하는 것입니다
sumrange.c 내가
$ gcc -shared -Wl,-install_name,sumrange.so -o ./sumrange.so -fPIC ./sumrange.c
01 (OSX에) 다음 명령을 사용하여 컴파일 할
#include <stdio.h>
long sumrange(long);
long sumrange(long arg)
{
long i, x;
x = 0L;
for (i = 0L; i < arg; i++) {
x = x + i;
}
return x;
}
23,516,
내가 파이썬에서 동일한 기능을 구현했습니다 :
>>> import ctypes
>>> sumrange = ctypes.CDLL('./sumrange.so')
>>> pysumrange = lambda arg: sum(xrange(arg))
>>> print sumrange.sumrange(10**8), pysumrange(10**8)
... 887459712 4999999950000000
을 ... 그리고 번호가 일치하지 않습니다
pysumrange = lambda arg: sum(xrange(arg))
은 그 때 나는 모두가 대화식 쉘에서 실행합니다. 왜 이럴 수 있니?
효과 (동일한 출력)없이 C 코드의 모든 변수에 unsigned long long
을 사용해 보았습니다.
, 나는 NumPy와 버전을 사용하고 파이썬과 C. –
관련 사이 좋게 떨어진다 : http://stackoverflow.com/questions/23522055/error-when-unload-a-64bit-dll-using-ctypes-windll –