Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 170
#1

a=*b Что это значит? - C++

26.01.2013, 15:58. Просмотров 1326. Ответов 30
Метки нет (Все метки)

Подскажите пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2013, 15:58     a=*b Что это значит?
Посмотрите здесь:

что это значит? - C++
Помогите, пожалуйста, разобраться в данном фрагменте программы) char* rus(const char* text) {char *bufRus=new char; ...

что это значит? - C++
в задании есть такой фрагмент if(!(num%div)) что это означает?

Что это значит? - C++
Что значит условие (!a)?В каком случае будет выполняться правда? if(!a) { // что угодно } else { // что угодно }

Что значит это условие - C++
Вот собственно код: if ( ( words = (char**)realloc(words, sizeof(char*) * (cnt + 1)) ) == NULL )

Что это значит if (x&1) ? - C++
основным вопросом есть if (x&1) что это за условия? и что это? x>>1. какая роль в коде? unsigned long long m_recursive (unsigned long...

что значит !a и a%=(c+10) и как это записать? - C++
что значит !a и a%=(c+10) и как это записать? заранее благодарен...

Что значит это строка кода? - C++
int _tmain(int argc, _TCHAR* argv) Объясните пожалуйста что значит этот участок кода, или дайте ссылку на какой либо ресурс для...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
27.01.2013, 15:50     a=*b Что это значит? #21
Цитата Сообщение от Evg Посмотреть сообщение
Пример в студию
А я что-то стормозил и решил, что возможно там и может быть undefined behaviour. Но сейчас совсем непонятно мне. Ведь *(p1++) = *p2; можно объяснить по обычному определению оператора постинкремента: "возвращает значение р1 до инкремента". И нет тут никакого повода думать о точках следования и возможном UB.

С другой стороны, кто скажет, в чём различие выражения x=x++; и *x++=*y; с точки зрения наличия UB???
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,637
27.01.2013, 16:47     a=*b Что это значит? #22
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
x=x++
здесь
создается копия
увеличивается
присваивается
в каком порядке это произойдет?? что присваивается копия или измененное значение?
может быть при начальном x=1
и 1 и 2

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
*x++=*y
здесь по моему нет UB
копируем значение из ячейки по адресу y в ячейку по адресу x
увеличиваем значение в ячейке по адресу x
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6419 / 3058 / 302
Регистрация: 04.12.2011
Сообщений: 8,330
Записей в блоге: 3
27.01.2013, 17:22     a=*b Что это значит? #23
Цитата Сообщение от ValeryS Посмотреть сообщение
здесь
создается копия
увеличивается
присваивается
По идее, должна создаваться копия и присваиваться (то есть ничего не меняется), а после инкремент. То есть:
x=x++; аналогично просто x++;
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
27.01.2013, 17:31     a=*b Что это значит? #24
Цитата Сообщение от IGPIGP Посмотреть сообщение
По идее, должна создаваться копия и присваиваться (то есть ничего не меняется), а после инкремент. То есть:
x=x++; аналогично просто x++;
Нет, он прав это зависит от компилятора, а вот *x++=*y не зависит, Kgfq был не прав, что разными компиляторами это воспринимается по разному.
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,637
27.01.2013, 17:40     a=*b Что это значит? #25
пример из другого форума
Это еще не самое страшное! Вот код:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>;
using namespace std;
 
int foo (int a) { return a; }
 
void main(void) {
    int i = 1;
    i = foo ( i++ );
    cout << i << '\n';
}
Ответ должен быть 1? Выводит "1", если компилить в режиме "Debug", и "2" -- в режиме "Release".
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
27.01.2013, 17:42     a=*b Что это значит? #26
в том то и дело, что когда значение переменной изменяется на ходу между двумя точками следования,
ответ никому ничего не должен
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,637
27.01.2013, 17:43     a=*b Что это значит? #27
час придет Evg и все научно объяснит
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6419 / 3058 / 302
Регистрация: 04.12.2011
Сообщений: 8,330
Записей в блоге: 3
27.01.2013, 18:03     a=*b Что это значит? #28
Цитата Сообщение от ValeryS Посмотреть сообщение
пример из другого форума
Тут тоже понятно вроде. Инкрементированное (то есть поскольку постфиксное, то инкремент произойдёт после передачи) значение передано по значению через формальный параметр, для инициализации локальной переменной. Стало быть передана копия (она будет инкрементирована и отброшена)). Потом вернулось значение, то есть то что было до инкремента. И потом присваивание. Логично. Но читать такие вещи, особенно с указателями забавно. Это факт.

Добавлено через 8 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
Стало быть передана копия (она будет инкрементирована и отброшена)).
А скорее всего она будет отброшена ещё до инкремента, так как нигде не используется.
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,637
27.01.2013, 18:05     a=*b Что это значит? #29
Цитата Сообщение от IGPIGP Посмотреть сообщение
И потом присваивание. Логично.
что логично??
компилятор ведет себя по разному
Цитата Сообщение от ValeryS Посмотреть сообщение
Ответ должен быть 1? Выводит "1", если компилить в режиме "Debug", и "2" -- в режиме "Release".
я подозреваю что в Debug вызывается функция
а в Release эту функцию компилятор выкинул и получилось
C++
1
i =  i++ ;
т.е совершенно две разных логики
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6419 / 3058 / 302
Регистрация: 04.12.2011
Сообщений: 8,330
Записей в блоге: 3
27.01.2013, 18:17     a=*b Что это значит? #30
Цитата Сообщение от ValeryS Посмотреть сообщение
что логично??
компилятор ведет себя по разному
я подозреваю что в Debug вызывается функция
а в Release эту функцию компилятор выкинул и получилось
C++
1
i =  i++ ;
т.е совершенно две разных логики
! Вот это да! Получается, действительно, неоднозначно. Еще один аргумент трижды подумать, прежде чем решиться...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2013, 21:24     a=*b Что это значит?
Еще ссылки по теме:

Не могу понять, что это значит: while(i<10/2) - C++
/*обращение массива*/ #include &lt;stdio.h&gt; main() { int p,i=0; static a={10,11,12,13,14, 15,16,17,18,19}; while(i&lt;10/2) { ...

Что это значит: *(void**)ReturnValue) = hHeap; ? - C++
Вот честно, не могу понять что значит вторая строчка кода: void* ReturnValue = (void*) HeapAlloc((HANDLE) hHeap,...

Ссылка как параметр шаблона. Что это значит? - C++
Увидел в данной теме http://www.cyberforum.ru/cpp-beginners/thread1900008.html что шаблонный тип можно указать как ссылку. Судя по тесту...

Floating point error:Domain.Abnormal program termination - ??? это что значит? - C++
Floating point error: Domain. Abnormal program termination #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; void main()...

Выводит значение "f". Что это значит? - C++
вместо результата выводит &quot;f&quot;, незнаю даже как бороться. подскажите в чем причина #include &lt;stdio.h&gt; #include &lt;conio.h&gt; void main () ...


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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17462 / 5700 / 361
Регистрация: 30.03.2009
Сообщений: 15,648
Записей в блоге: 26
27.01.2013, 21:24     a=*b Что это значит? #31
Цитата Сообщение от ValeryS Посмотреть сообщение
час придет Evg и все научно объяснит
Дык всё уже украдено до нас: http://alenacpp.blogspot.ru/2005/11/...ce-points.html
Yandex
Объявления
27.01.2013, 21:24     a=*b Что это значит?
Ответ Создать тему
Опции темы

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