Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
3 / 1 / 0
Регистрация: 08.03.2012
Сообщений: 11

Использование оператора ^= в разных случаях дает разный результат

14.04.2012, 10:32. Показов 869. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
меняю переменные местами:
C#
1
a ^ = b ^= a ^= b;
В а записывает всегда "0". То есть не работает так.

Когда делаю так:
C#
1
2
b ^= a ^= b; 
a ^= b;
все работает.

В чем дело?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.04.2012, 10:32
Ответы с готовыми решениями:

Один запрос даёт разный результат при разных ролях
Добрый день, вообщем такая штука, один и тот же запрос(да отрабатывает именно он, параметры именно такие-же, проходил несколько раз точкой...

В разных случаях оператора case присвоить значения переменным
program kosmos; var b,g,k,y:integer; var b1,g1,k1,y1:integer; var a1:integer; begin writeln('1-1 галинд, 2-3 галинд, 3-4...

Изменение разных элементов вектора в разных потоках даёт отличный от join() результат, нежели при detach()
Имеется using V = vector<double>; using M = vector<V>; Есть функция матричного умножения A*B. На каждую вектор-строку матрицы A я...

4
74 / 63 / 0
Регистрация: 24.03.2012
Сообщений: 333
14.04.2012, 10:44
Вариант a = true, b = true был?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
14.04.2012, 10:55
Кошковладельцев, ну давайте пройдемся:
a = 0, b = 1.
Шаг 1: a ^= b // a = 1, b = 1
Шаг 2: b ^= a // a = 1, b = 0
Шаг 3: a ^= b // a = 1, b = 0

Что не так?


4464618, проблема в том, что компилятор генерирует IL-код таким образом, что если на момент вычисления все значения известны (а они известны), то все эти значения копируются в стек сразу. То есть при первом a ^= b значение a изменяется, но в последнем шаге используется изначальное значение а, взятое на момент начала вычисления. В примере выше - это ноль.
1
3 / 1 / 0
Регистрация: 08.03.2012
Сообщений: 11
14.04.2012, 11:02  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
4464618, проблема в том, что компилятор генерирует IL-код таким образом, что если на момент вычисления все значения известны (а они известны), то все эти значения копируются в стек сразу. То есть при первом a ^= b значение a изменяется, но в последнем шаге используется изначальное значение а, взятое на момент начала вычисления. В примере выше - это ноль.
хваленный c#...
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
14.04.2012, 11:06
Цитата Сообщение от 4464618 Посмотреть сообщение
хваленный c#...
Да точно такой же, как и другие языки - со своими нюансами.
Задача программиста, как и любого ремесленника, - выбирать тот инструмент, который наиболее подходит для решения поставленной задачи и знать как с этим инструментом работать.
Поймёте эту простую вещь и вопросы в стиле "какой язык лучше" отпадут раз и навсегда. Но возникнут другие вопросы в стиле "какой язык лучше для того, что мне нужно сделать"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.04.2012, 11:06
Помогаю со студенческими работами здесь

Разный результат в разных браузерах
Здравствуйте! Полгода назад прошел базовый курс JS, недавно решил пройтись по простеньким упражнениям для самопроверки. Все...

На разных компьютерах скрипт выдаёт разный результат
Добрый день. В предыдущей теме (https://www.cyberforum.ru/vba/thread1366571.html) проверили мой скрипт: sURL =...

[Задача] Разный результат на разных версиях gcc
Возможно, кому-то было бы интересно поразбираться с тонкоматериальным вопросом. Если хочется самостоятельно докопаться до истины,...

В разных системах выводит разный результат, почему?
#include <stdio.h> #include <string.h> #include <ctype.h> #include <locale.h> #define DELIM " ,.!?\n\t" #define WORDSIZ 20 void...

статичный "select count(*)" дает разный результат
Я ничего не понимаю <? #не динамичный! $query = "SELECT COUNT(LoginID) AS Cnt FROM search_Profile_MF left join BlockedIDs BI...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru