g++ -fwrapv
Problem nie jest czysto debianowy ale może ktoś będzie wiedział co się dzieje.
tohver@Su30:~/mpi$ cat test.cpp
#include <iostream>
int main() {
int i = -2147483648;
int j = -1;
printf("%d\n", i / j);
return i / j;
}
tohver@Su30:~/mpi$ g++ -fwrapv test.cpp
tohver@Su30:~/mpi$ ./a.out
Floating point exception
Dlaczego ta opcja nie działa? Idąc dalej:
tohver@Su30:~/mpi$ cat test.cpp
#include <iostream>
int main() {
int i = 2147483648;
i++;
printf("%d\n", i);
return i;
}
tohver@Su30:~/mpi$ g++ -ftrapv test.cpp
tohver@Su30:~/mpi$ ./a.out
-2147483647
Jeżeli dobrze rozumiem mana te opcje powinny zapobiegać obu przypadkom. O co
chodzi?
--
Pozdrawiam,
Krzysztof Andrelczyk
Reply to: