Spin
|
он самый
|
|
|
|
Рег.: 17.09.2003
|
Сообщений: 14521
|
|
Рейтинг: 4387
|
|
INT_MIN / -1 = Floating point exception
30.01.2013 15:10
|
|
|
Впечатляет, хотя может и боян
code:
$ cat intmin.c
#include <limits.h>
int foo (int a, int b) {
return a / b;
}
int main (void) {
return foo (INT_MIN, -1);
}
$ gcc -O0 intmin.c -o intmin
$ ./intmin
Floating point exception
$
$ gcc -O2 intmin.c -o intmin
$ ./intmin
$
а еще можно в 64битном bash выполнить вот это:
code:
$ ($((-2**63/-1)))
Floating point exception
$
а вот и ссылочка с дополнительными плюшками: http://avva.livejournal.com/2548306.html
|
- а этот ваш С++ - он функциональный? - еще какой функциональный! |
|
Basilio
|
GreenOne
|
|
|
|
Рег.: 14.10.2002
|
Сообщений: 13749
|
Из: Москва
|
Рейтинг: 3476
|
|
Re: INT_MIN / -1 = Floating point exception
[re: Spin]
30.01.2013 15:17
|
|
|
-INT_MIN > INT_MAX, почему бы и нет?
|
|
Spin
|
он самый
|
|
|
|
Рег.: 17.09.2003
|
Сообщений: 14521
|
|
Рейтинг: 4387
|
|
Re: INT_MIN / -1 = Floating point exception
[re: Basilio]
30.01.2013 15:19
|
|
|
да я и не против, просто впечатляет что при этом кидается эксепшн, что по-моему нелогично ну и авторы баша судя по всему тоже не в курсе, раз деление на ноль заэкранировали проверкой, а вот такое - нет
|
- а этот ваш С++ - он функциональный? - еще какой функциональный! |
|
Hoochy
|
Безжалостный пездюк
|
|
|
|
Рег.: 06.07.2005
|
Сообщений: 1073
|
|
Рейтинг: 1996
|
|
Re: INT_MIN / -1 = Floating point exception
[re: Spin]
30.01.2013 15:50
|
|
|
Это не эксепшн в терминах C++. Это просто сигнал SIGFPE. Название конечно неудачное выбрано для него =)
|
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7267
|
|
Рейтинг: 8189
|
|
Re: INT_MIN / -1 = Floating point exception
[re: Spin]
30.01.2013 15:53
|
|
|
а почему операции с int вызывают Floating exception?
|
|
|
unkulunkulu
|
unkulunkulunkulu
|
|
|
|
Рег.: 12.11.2006
|
Сообщений: 18453
|
Из: 13000
|
Рейтинг: 11759
|
|
Re: INT_MIN / -1 = Floating point exception
[re: Hoochy]
30.01.2013 15:53
|
|
|
Quote:
Это не эксепшн в терминах C++.
ну да, было бы прикольно, если бы оно кидало эксепшен в терминах C++ из проги на C
|
|
Spin
|
он самый
|
|
|
|
Рег.: 17.09.2003
|
Сообщений: 14521
|
|
Рейтинг: 4387
|
|
Re: INT_MIN / -1 = Floating point exception
[re: dtbeaver]
30.01.2013 16:49
|
|
|
думаю из списка сигналов больше всего подходит SIGFPE - вот его и кидают
|
- а этот ваш С++ - он функциональный? - еще какой функциональный! |
|
Rebble
|
ханжа
|
|
|
|
Рег.: 13.08.2004
|
Сообщений: 3115
|
Из: highway2hell
|
Рейтинг: 8250
|
|
Re: INT_MIN / -1 = Floating point exception
[re: dtbeaver]
30.01.2013 17:37
|
|
|
Это особенность конкретной операционки на конкретной архитектуре
code: DO_ERROR_INFO(X86_TRAP_DE, SIGFPE, "divide error", divide_error, FPE_INTDIV,
regs->ip)
|
And so much crap makes you blind |
|
Sevurrrra
|
Хранитель маяка
|
|
|
|
Рег.: 10.09.2007
|
Сообщений: 2050
|
|
Рейтинг: 2759
|
|
Re: INT_MIN / -1 = Floating point exception
[re: Rebble]
30.01.2013 19:47
|
|
|
В ответ на:
Это особенность конкретной операционки на конкретной архитектуре
Посоны говорят, что на msvc11 / x86 тоже воспроизводится.
|
|
Spin
|
он самый
|
|
|
|
Рег.: 17.09.2003
|
Сообщений: 14521
|
|
Рейтинг: 4387
|
|
Re: INT_MIN / -1 = Floating point exception
[re: Sevurrrra]
30.01.2013 20:29
|
|
|
он говорил о том, что целочисленное деление вот так странно мапится в Floating point exception в конкретной операционке сам "баг" заключается в специфике работы процессорной функции x86 idiv - а это фича процессора, а не архитектуры операционки каков аналог сигналов под виндой?
|
- а этот ваш С++ - он функциональный? - еще какой функциональный! |
|
unkulunkulu
|
unkulunkulunkulu
|
|
|
|
Рег.: 12.11.2006
|
Сообщений: 18453
|
Из: 13000
|
Рейтинг: 11759
|
|
Re: INT_MIN / -1 = Floating point exception
[re: Spin]
30.01.2013 20:47
|
|
|
Quote:
каков аналог сигналов под виндой?
в данном случае вроде бы должен использоваться SEH
|
|
novikov
|
member
|
|
|
|
Рег.: 12.01.2007
|
Сообщений: 146
|
Из: спб
|
Рейтинг: 45
|
|
Re: INT_MIN / -1 = Floating point exception
[re: Spin]
30.01.2013 22:05
|
|
|
% $((-2**63/-1)) zsh: command not found: -9223372036854775808
|
|
Spin
|
он самый
|
|
|
|
Рег.: 17.09.2003
|
Сообщений: 14521
|
|
Рейтинг: 4387
|
|
Re: INT_MIN / -1 = Floating point exception
[re: novikov]
31.01.2013 14:04
|
|
|
64битный?
|
- а этот ваш С++ - он функциональный? - еще какой функциональный! |
|
novikov
|
member
|
|
|
|
Рег.: 12.01.2007
|
Сообщений: 146
|
Из: спб
|
Рейтинг: 45
|
|
Re: INT_MIN / -1 = Floating point exception
[re: Spin]
02.02.2013 20:29
|
|
|
ага; дабы развеять сомнения:
code:
% $[2**63]; $[2**63/-1]; $[2**64]
zsh: command not found: -9223372036854775808
zsh: command not found: -9223372036854775808
zsh: command not found: 0
|
|
Spin
|
он самый
|
|
|
|
Рег.: 17.09.2003
|
Сообщений: 14521
|
|
Рейтинг: 4387
|
|
Re: INT_MIN / -1 = Floating point exception
[re: novikov]
02.02.2013 20:50
|
|
|
на макоси баш от такого виснет в бесконечном цикле
|
- а этот ваш С++ - он функциональный? - еще какой функциональный! |
|
novikov
|
member
|
|
|
|
Рег.: 12.01.2007
|
Сообщений: 146
|
Из: спб
|
Рейтинг: 45
|
|
Re: INT_MIN / -1 = Floating point exception
[re: Spin]
02.02.2013 21:26
|
|
|
|