Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sapendo
5 / 5 / 3
Регистрация: 13.05.2014
Сообщений: 130
#1

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

13.10.2014, 23:49. Просмотров 181. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не ясен код a^=b^=a^=b (C++):

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

Не ясен синтаксис.STL - C++
Наткнулся на такой код: list&lt;int&gt;::const_iterator ci; Но не могу понять, что это значит... мой небогатый опыт дал только два...

мне не ясен цикл do while - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; void drill(); int count; // count and...

Не ясен смысл функции. Деревья. - C++
Доброго времени суток. Не могу понять смысла функции F2. #include &lt;stdio.h&gt; struct tree { int val; tree *child,*next; ...

Не ясен ответ валидатора - HTML, CSS
здравствуйте, проверяю на валидность http://validator.w3.org/#validate_by_uri получаю ответ 500 Can't connect to...

1C 8.x не ясен смысл Движения.ОстаткиМатериалов.Модифицированность() - 1С
дочитываю- таки книжку обучалку по 1с до конца и обнаружилтам такие строки ОбновитьДатуДвижений = ЭтоНовый() Или...

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

Не ясен синтаксис.STL - C++
Наткнулся на такой код: list&lt;int&gt;::const_iterator ci; Но не могу понять, что это значит... мой небогатый опыт дал только два...

мне не ясен цикл do while - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; void drill(); int count; // count and...

Не ясен смысл функции. Деревья. - C++
Доброго времени суток. Не могу понять смысла функции F2. #include &lt;stdio.h&gt; struct tree { int val; tree *child,*next; ...

Не ясен ответ валидатора - HTML, CSS
здравствуйте, проверяю на валидность http://validator.w3.org/#validate_by_uri получаю ответ 500 Can't connect to...

1C 8.x не ясен смысл Движения.ОстаткиМатериалов.Модифицированность() - 1С
дочитываю- таки книжку обучалку по 1с до конца и обнаружилтам такие строки ОбновитьДатуДвижений = ЭтоНовый() Или...

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

Не ясен синтаксис.STL - C++
Наткнулся на такой код: list&lt;int&gt;::const_iterator ci; Но не могу понять, что это значит... мой небогатый опыт дал только два...

мне не ясен цикл do while - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; void drill(); int count; // count and...

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

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

Не ясен синтаксис.STL - C++
Наткнулся на такой код: list&lt;int&gt;::const_iterator ci; Но не могу понять, что это значит... мой небогатый опыт дал только два...

мне не ясен цикл do while - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; void drill(); int count; // count and...

Не ясен смысл функции. Деревья. - C++
Доброго времени суток. Не могу понять смысла функции F2. #include &lt;stdio.h&gt; struct tree { int val; tree *child,*next; ...

Не ясен ответ валидатора - HTML, CSS
здравствуйте, проверяю на валидность http://validator.w3.org/#validate_by_uri получаю ответ 500 Can't connect to...

1C 8.x не ясен смысл Движения.ОстаткиМатериалов.Модифицированность() - 1С
дочитываю- таки книжку обучалку по 1с до конца и обнаружилтам такие строки ОбновитьДатуДвижений = ЭтоНовый() Или...


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

Или воспользуйтесь поиском по форуму:
4
Jewbacabra
Эксперт PHP
2660 / 2247 / 845
Регистрация: 24.04.2014
Сообщений: 6,751
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 / 3
Регистрация: 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
2660 / 2247 / 845
Регистрация: 24.04.2014
Сообщений: 6,751
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
Ответ Создать тему
Опции темы

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