crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
ViGOur
  опции профиля:
сообщение 9.4.2008, 13:23
Сообщение #1


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Не пользуемся компилятором!

Что будет выведено на экран?
#include <iostream>

int main(int argc, char** argv)
{
  int x = 0;
  int y = 0;

  if (x++ && y++)
  {
    y += 2;
  }

  std::cout << x + y << std::endl;

  return 0;
}
И почему? :)

p.s. я знаю почему, просто задачка порадовала. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Архимед_*
сообщение 9.4.2008, 13:29
Сообщение #2





Гости








    


Единица, будет выведена, ибо "y++" не будет вычислено т.к. уже заранее известен результат &&(поведение по Стандарту).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2008, 13:33
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


да вроде только "0"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 9.4.2008, 13:34
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Litkevich Yuriy @ 9.4.2008, 14:33) *
да вроде только "0"
Объясняй почему. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Архимед_*
сообщение 9.4.2008, 13:37
Сообщение #5





Гости








    


Цитата(Litkevich Yuriy @ 9.4.2008, 13:33) *
да вроде только "0"

Проверил сейчас: единицу выводит
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 9.4.2008, 13:39
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Архимед, редиска! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Архимед_*
сообщение 9.4.2008, 13:42
Сообщение #7





Гости








    


Я тож тебя люблю :wub:.
Чёгт, пароль в упор не помню :rolleyes:.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2008, 13:45
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


хотя нет,
постинкремент по х и у в условии, потом x + y , тоды 2 получается
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 9.4.2008, 13:49
Сообщение #9


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Ладно, пока ломайте голову, а я еще задачку дам, но в другой теме. :)

t;line-height:100%">Архимед, а ты запроси пароль новый выслать... ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2008, 13:54
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


я с компилил, но как получился результат не понял :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 9.4.2008, 13:57
Сообщение #11


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


побольше народу отметится, я все расскажу. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Novak
  опции профиля:
сообщение 9.4.2008, 23:33
Сообщение #12


Активный участник
***

Группа: Участник
Сообщений: 319
Регистрация: 15.3.2008
Из: Замкадыш
Пользователь №: 121

Спасибо сказали: 28 раз(а)




Репутация:   6  


в принципе, логично, что единица - второе выражение в И все же вычисляться совсем не должно...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.4.2008, 5:08
Сообщение #13


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


хм, да я нашел у себя в заначке шпаргалки по "С", когда писал первые програмки под микроконтроллер PICmicro, об этом моменте, еслиб там вместо у была бы функция, она бы тоже не вызывалась, а я про это уже забыл, просто выработал правило, в условиях ничего невычислять, по возможности, видимо оно меня и спасает от таких казусов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rich
  опции профиля:
сообщение 10.4.2008, 20:46
Сообщение #14


Участник
**

Группа: Участник
Сообщений: 123
Регистрация: 1.3.2008
Пользователь №: 109

Спасибо сказали: 6 раз(а)




Репутация:   0  


потому что if(x++) вернёт false, и поэтому if(x++ && (/*всё что угодно*/)) тоже вернёт false.
задачка очень порадовала. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.4.2008, 8:09
Сообщение #15


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Будет время найду еще парочку оригинальных задачек. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 26.6.2025, 11:10