[devel] вопрос по языку Си - порядок вычисления операндов

Led ledest at gmail.com
Thu Oct 1 09:30:53 UTC 2009


On Thursday, 01 October 2009 11:31:39 Kharitonov A. Dmitry wrote:
> Неоднократно натыкался на такое:
> исходное выражение а+b+c
> менялся порядок вычисления случайным образом
> то так
> а+(b+c)
> то так
> (а+b)+c
> то так
> (с+b)+a
> естественно получалась случайно работающая программа. Багу ловил 3 месяца.
> Во всех руководствах написано, что расстановка скобок принудительно
> должна обеспечивать порядок вычислений,

Это ещё нужно постараться, чтобы найти такое рукоблу^H^H^Hводство. Ни в одном 
стандарте этого нет.

> но я опять таки натыкался на 
> отступления и от этого. Разбивание выражения с применением промежуточной
> переменной однозначно определяло порядок, именно тот, который мне нужен.
> Промежуточная переменная в конечном коде в результате оптимизации исчезала.
> Так же трудно уловимый баг связан с подстановкой в аргументы функции
> скрытых временных особенно, если эти аргументы помеченны модификатором
> const.

-- 
Led


More information about the Devel mailing list