Я только что начал на C++, поэтому не уверен в порядке оценки. В приведенном ниже сегменте кода, как вы видите, изменение порядка оценки при оценке C дает мне разные результаты, когда я оцениваю C * (line-i)/i, он дает мне -131213633 и когда я оцениваю его как (line- i)/i * C, он дает мне 145422675. В первом случае я понимаю, что это проблема переполнения, но я хочу понять порядок оценки.Порядок оценки в C++
C = C * (line - i)/i ;
(gdb) p line
$1 = 31
(gdb) p i
$2 = 15
(gdb) p C
$3 = 145422675
(gdb) p C * (line - i)/i
$4 = -131213633
(gdb) p (line - i)/i * C
$5 = 145422675
http://en.cppreference.com/w/cpp/language/eval_order помечен как вне темы – Danh
Вы не знаете, что такое оценка оценки, или вы не знаете, почему это имеет значение? –
@ VaughnCato он заявил, что знает, что произошло переполнение. – Danh