metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2011-09-19 08:14 pm

О конкатенации строк

Дано: мутабельная переменная максимально длиной 3 символа. В ней записано этих самых три символа и некий интерпретатор пытается выполнить следующую операцию:
a=a+'c'
само собой, падая с рунтайм-ошибкой.

Внимание, вопрос: насколько теоретически сложно в рунтайм-ошибке показать причину этой ошибки, если сначала выполняется конкатенация строк с получением 4-символьной строки, а потом производится присвоение этой строки переменной, где может хранится только 3 символа?

[identity profile] w00dy.livejournal.com 2011-09-19 06:28 pm (UTC)(link)
> если сначала выполняется конкатенация строк

Сначала должна выполняться проверка на границы. len (a) == 3, sizeof (a) == 3. 3 + 1 > 3 - наступает рунтиме еггог.

[identity profile] metaclass.livejournal.com 2011-09-20 06:07 am (UTC)(link)
Для этого нужно сначала вывести типы всех этих выражений, я думаю, при этом ошибка бы до рунтайма просто не дожила.