Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Sapendo
5 / 5 / 4
Регистрация: 13.05.2014
Сообщений: 130
#1

Не ясен код a^=b^=a^=b

13.10.2014, 23:49. Просмотров 200. Ответов 4
Метки нет (Все метки)

Здравствуйте!
Есть такой код
C
1
2
3
4
5
6
7
8
#include <stdio.h> 
main(void) 
{ 
  int a=5; 
  int b=7; 
  a^=b^=a^=b; 
  printf("%d%d",a,b); 
}
не могу понять вод эту строку
C
1
a^=b^=a^=b;
Объясните пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2014, 23:49
Ответы с готовыми решениями:

мне не ясен цикл do while
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace...

Не ясен синтаксис в коде
Доброго времени суток! LPVOID buffer = malloc( siz + 1 ); // создали...

Не ясен синтаксис.STL
Наткнулся на такой код: list&lt;int&gt;::const_iterator ci; Но не могу понять,...

Не ясен смысл функции. Деревья.
Доброго времени суток. Не могу понять смысла функции F2. #include &lt;stdio.h&gt; ...

Не совсем ясен код
вот есть код на ассемблере, написал простенькую программу на С++...

4
Jewbacabra
Эксперт PHP
3245 / 2745 / 1245
Регистрация: 24.04.2014
Сообщений: 8,363
13.10.2014, 23:57 #2
https://ru.wikipedia.org/wiki/%D0%A1...%D0%BB%D1%8E_2
http://habrahabr.ru/post/183462/
1
vikichocolated
4 / 4 / 0
Регистрация: 14.04.2014
Сообщений: 60
14.10.2014, 00:01 #3
Возможно, сначала будет a^b, потом то что получим(с, например) b^c и тд (код выполняется справа налево)
Исключающее ИЛИ или как его называют, XOR устанавливает бит, если соответствующие биты в операндах отличаются. Например, в результате операции 127 ^ 120 получаем

01111111 127 в двоичном представлении
01111000 120 к двоичном представлении битовое исключающее
^ -------------- ИЛИ
00000111 результат
0
Sapendo
5 / 5 / 4
Регистрация: 13.05.2014
Сообщений: 130
14.10.2014, 00:20  [ТС] #4
C
1
a^=b^=a^=b;
строка меняет значения местами, но я не могу понять как?????


С использованием операции XOR можно реализовать обмен значений однотипных пременных без использования дополнительной переменной:
int x = 5, y = 7;

x = x^y; // x == 2 почему 2??
y = x^y; // y == 5 почему 5???
x = x^y; // x == 7 почему 7????

Ребята помогите! Хочу разобраться!
0
Jewbacabra
Эксперт PHP
3245 / 2745 / 1245
Регистрация: 24.04.2014
Сообщений: 8,363
14.10.2014, 00:24 #5
Цитата Сообщение от Sapendo Посмотреть сообщение
x = x^y; // x == 2 почему 2??
в 2 системе счисления: 5 - 0101 7 - 0111
0101
^
0111
-------
0010 = 2 в 10 системе счисления
Цитата Сообщение от Sapendo Посмотреть сообщение
y = x^y; // y == 5 почему 5???
x = x^y; // x == 7 почему 7????
вычисляется аналогично
1
14.10.2014, 00:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2014, 00:24

Не ясен ответ валидатора
здравствуйте, проверяю на валидность http://validator.w3.org/#validate_by_uri...

не ясен смысл Движения.ОстаткиМатериалов.Модифицированность()
дочитываю- таки книжку обучалку по 1с до конца и обнаружилтам такие строки ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru