MIPS 용으로 컴파일 된 프로그램을 실행할 때 아주 이상한 문제가 발생했습니다. 다음 코드 스 니펫은 시간 신기원을 가져 와서 마이크로 초 정밀도로 unsigned long long
변수에 저장하는 것입니다.부호없는 long long C에서 이상한 행동
변수는 내가 확인한 8 바이트를 저장할 수 있으며 sizeof(unsigned long long)
입니다.
이 코드는 이상하게 출력합니다 : 나는 다른 라인으로 계산을 깰 때
그러나>> Times is now 484305845 , time since epoch in seconds is: 1357751315
는, 작동 :
unsigned long long microtime=0;
struct timeval time_camera = { .tv_sec=0, .tv_usec=0 };
gettimeofday(&time_camera,NULL);
microtime = time_camera.tv_sec * 1000000 + time_camera.tv_usec;
printf("Times is now %llu , time since epoch in seconds is: %lu\n", microtime, time_camera.tv_sec);
그것은 나에게 다음과 같은 출력을 제공합니다! :
unsigned long long microtime=0;
struct timeval time_camera = { .tv_sec=0, .tv_usec=0 };
gettimeofday(&time_camera,NULL);
microtime = time_camera.tv_sec;
microtime = microtime * 1000000;
microtime = microtime + time_camera.tv_usec;
printf("Times is now %llu , time since epoch in seconds is: %lu\n", microtime, time_camera.tv_sec);
출력은 다음과 같습니다
Times is now 1357751437422143 , time since epoch in seconds is: 1357751437
는 이제이 작동 단지 우연의 일치인가? 예를 들어 메모리가 손상되었거나 실제로 어딘가에 초과했습니다. MIPS 컴파일러일까요? 어떤 도움을 주셔서 감사합니다!
우선 순위 규칙을 게시 해 주셔서 감사합니다. – Mazze