double arrow

Операция присваивания


Имеется ряд операций присваивания, каждая из которыхгруппируется слева направо. Все операции требуют в качествесвоего левого операнда l_значение, а типом выражения присва-ивания является тип его левого операнда. Значением выраженияприсваивания является значение, хранимое в левом операндепосле того, как присваивание уже будет произведено. Двечасти составной операции присваивания являются отдельнымилексемами. выражение_присваивания: l_значение = выражение l_значение += выражение l_значение -= выражение l_значение *= выражение l_значение /= выражение l_значение %= выражение l_значение >>= выражение l_значение <<= выражение l_значение &= выражение l_значение ^= выражение l_значение |= выражение Когда производится простое присваивание '=', значениевыражения заменяет значение объекта, на которое ссылаетсяl_значение. Если оба операнда имеют арифметический тип, топеред присваиванием правый операнд преобразуется к типулевого операнда. В выражение вида e1 оп= e2, где оп - одна из перечис-ленных выше операций, эквивалентно выражениюe1 = e1 оп (e2), с тем отличием, что выражение e1 вычисля-ется только один раз. В случае операций += и -= левый опе-ранд может быть указателем, причем при этом (целочисленный)правый операнд преобразуется таким образом, как объяснено вп. 0.4; все правые операнды и все отличные от указателейлевые операнды должны иметь арифметический тип. Используемые в ОС ДЕМОС компиляторы допускают присваи-вание указателя целому, целого указателю и указателя указа-телю другого типа. Такое присваивание является чистым копи-рованием без каких-либо преобразований. Такое употреблениеопераций присваивания является непереносимым и может приво-дить к указателям, которые при использовании вызывают ошибкиадресации. Тем не менее гарантируется, что присваивание ука-зателю константы 0 дает нулевой указатель, который можноотличать от указателя на любой объект. -19-


Сейчас читают про: