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

Kirill A. Shutemov kirill at shutemov.name
Thu Oct 1 09:16:09 UTC 2009


2009/10/1 Kharitonov A. Dmitry <kharpost �� rambler.ru>:
> Неоднократно натыкался на такое:
> исходное выражение а+b+c
> менялся порядок вычисления случайным образом
> то так
> а+(b+c)
> то так
> (а+b)+c
> то так
> (с+b)+a
> естественно получалась случайно работающая программа. Багу ловил 3 месяца.

Link?

> Во всех руководствах написано, что расстановка скобок принудительно должна
> обеспечивать порядок вычислений, но я опять таки натыкался на отступления и
> от этого. Разбивание выражения с применением промежуточной переменной
> однозначно определяло порядок, именно тот, который мне нужен. Промежуточная
> переменная в конечном коде в результате оптимизации исчезала.
> Так же трудно уловимый баг связан с подстановкой в аргументы функции скрытых
> временных особенно, если эти аргументы помеченны модификатором const.
>
> _______________________________________________
> Devel mailing list
> Devel �� lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel


More information about the Devel mailing list