Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Указатели и умнoжение на С

Автор: Tan 4.10.2007 3:54

А как компилятор различает эти операции ?

sum = sum + *(mas + i) * (*(vector + j));
Например в этом примере? По моей задумке здесь к счётчику прибавляется произведение элементов на которые указывают mas +i и vector + i соответственно.

Автор: volvo 4.10.2007 4:19

Что значит "как различает"? Есть же разбор выражения, и для того чтобы пройти этот разбор, выражение должно удовлетворять определенным условиям (см. Стандарт языка)... Кроме того, компилятор знает типы всех переменных, участвующих в выражении, и способен определить, к элементам какого типа можно применять "*" как операцию разыменования, а где "*" - это именно умножение...

(кстати, одна пара скобок у тебя в выражении лишняя... Компилятор вполне способен обойтись и без нее)