Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> int i = 0; i += i++; Вопрос на собеседовании 
:(
    Опции темы
Deja_Vu
Дата 3.10.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 15.6.2007
Где: Казань

Репутация: нет
Всего: 2



Код

    int i = 0;
            i += i++;
            printf("i += i++ : %d\n", i);
            i = 0;
            i = i + i++;
            printf("i = i + i++ : %d\n", i);
            i = 0;
            i = i + ++i;
            printf("i = i + ++i : %d\n", i);
    getch();

Код

i += i++ : 1
i = i + i++ : 1
i = i + ++i : 2


Код

            int i = 0;
            i += i++;
            Console.WriteLine("i += i++ : {0}", i);
            i = 0;
            i = i + i++;
            Console.WriteLine("i = i + i++ : {0}", i);
            i = 0;
            i = i + ++i;
            Console.WriteLine("i = i + ++i : {0}", i);
            Console.ReadLine();

Код

i += i++ : 0
i = i + i++ : 0
i = i + ++i : 1


Это сообщение отредактировал(а) Deja_Vu - 3.10.2007, 11:37
PM Skype   Вверх
skyboy
Дата 3.10.2007, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(skyboy @  3.10.2007,  10:35 Найти цитируемый пост)
а где можно посмотреть стандарт по С#

стандарт, 2.5 Мб
Вот только с английским не настолько дружу, чтоб сходу найти нужный раздел...
PM MAIL   Вверх
Alek86
Дата 3.10.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 1
Всего: 25



пара оффтопов

Deja_Vu, насчет С++ еще раз - там неопределенность! если кто-то будет говорить иначе, посылай читать стандарт


skyboy, насчет ссылки  про точки следования - smile 
сам почитываю ее блог иногда smile


--------------------
user posted image    user posted image
PM MAIL   Вверх
ivashkanet
Дата 3.10.2007, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 3
Всего: 149



Цитата(Deja_Vu @  3.10.2007,  11:36 Найти цитируемый пост)
i = i + i++ : 1

Меня интересует почему в С++ здесь единица, а не ноль?

Добавлено через 43 секунды
Все потому что неопределённость?
PM MAIL WWW ICQ   Вверх
Deja_Vu
Дата 3.10.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 15.6.2007
Где: Казань

Репутация: нет
Всего: 2



Цитата(Alek86 @ 3.10.2007,  13:27)
Deja_Vu, насчет С++ еще раз - там неопределенность! если кто-то будет говорить иначе, посылай читать стандарт

я что-то увтерждаю?! ((-
Я просто привожу результат компиляция на VS 2008. 

В MSDN и в спецификации ничего по этому поводу найти не могу... остается
 всего одно предположение

i = i + i++;

1. вычисляется выражение i + i
2. выполняется операция i++
3. выполняется присваивание i = результату(1)


Добавлено @ 13:44
да уж ...
Код

 i = 1 + (i++)*100  ;
Console.WriteLine("i = 1 + (i++)*100 : {0,2}", i);


Код

i = 1 + (i++)*100 : 1

 smile 

Это сообщение отредактировал(а) Deja_Vu - 3.10.2007, 13:45
PM Skype   Вверх
tol05
Дата 3.10.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 36
Всего: 170



нашел неплохой источник информации по данной проблеме здесь
 smile 




--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Deja_Vu
Дата 3.10.2007, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 15.6.2007
Где: Казань

Репутация: нет
Всего: 2



sorry -))

Это сообщение отредактировал(а) Deja_Vu - 3.10.2007, 14:21
PM Skype   Вверх
Fazil6
Дата 3.10.2007, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: нет
Всего: 60



Цитата(ivashkanet @  3.10.2007,  13:32 Найти цитируемый пост)
Меня интересует почему в С++ здесь единица, а не ноль?

не в С++, а в программе, скомпиллированной определенным компиллятором определенной версии. Как сделали разработчики порядок и логику вычислений, так ты и получил. На другой версии компиллятора ты можешь получить другое значение, например 24 и ошибкой это не будет. Как говорится что написал - то и получил. Написал выражение правила вычисления которого не существует - то и получай в результате что угодно.
PM MAIL   Вверх
Deja_Vu
Дата 3.10.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 15.6.2007
Где: Казань

Репутация: нет
Всего: 2



Цитата(Deja_Vu @ 3.10.2007,  13:35)
 всего одно предположение

i = i + i++;

1. вычисляется выражение i + i
2. выполняется операция i++
3. выполняется присваивание i = результату(1)


thx to tol05
оказываетя мое предположение верно.
Описание нашей проблемы

Это сообщение отредактировал(а) Deja_Vu - 3.10.2007, 14:33
PM Skype   Вверх
ivashkanet
Дата 3.10.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 3
Всего: 149



Цитата(Fazil6 @  3.10.2007,  14:24 Найти цитируемый пост)
не в С++, а в программе, скомпиллированной определенным компиллятором определенной версии

Я это знаю smile 
Цитата(Fazil6 @  3.10.2007,  14:24 Найти цитируемый пост)
Написал выражение правила вычисления которого не существует - то и получай в результате что угодно. 

Это я и имел ввиду

Спасибо ;-)
PM MAIL WWW ICQ   Вверх
Alek86
Дата 3.10.2007, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 1
Всего: 25



Цитата(Deja_Vu @  3.10.2007,  14:30 Найти цитируемый пост)
оказываетя мое предположение верно.Описание нашей проблемы


[/quote=Как раз с той ссылки]At the end of the day the C# compiler results in a value of 1 and the C++ compiler results in a value of 2. Neither is right, neither is wrong and both are undefined.[/quote]

так что не совсем верно smile

а в шарпе в стандарте я чето не нашел никаких правил :(.
думается мне, что там все считается по-порядку

к тому же я знаю только одну версию компилятора C#, написанную майкрософтом

ЗЫ. кстати, под линух компилятор (а не среда исполнения Mono) существует?


--------------------
user posted image    user posted image
PM MAIL   Вверх
Deja_Vu
Дата 3.10.2007, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 15.6.2007
Где: Казань

Репутация: нет
Всего: 2



Цитата(Alek86 @ 3.10.2007,  16:01)
Цитата(Как раз с той ссылки)
At the end of the day the C# compiler results in a value of 1 and the C++ compiler results in a value of 2. Neither is right, neither is wrong and both are undefined.

так что не совсем верно smile

ну ... что правильно, и не правильно не мне решать ... но то как действует компилятор C# от MS описано то мною верно -))

Это сообщение отредактировал(а) Deja_Vu - 3.10.2007, 23:10
PM Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1146 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.