Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Задачка №1
Форум на CrossPlatform.RU > Разработка > С\С++
ViGOur
Не пользуемся компилятором!

Что будет выведено на экран?
#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. я знаю почему, просто задачка порадовала. :)
Архимед
Единица, будет выведена, ибо "y++" не будет вычислено т.к. уже заранее известен результат &&(поведение по Стандарту).
Litkevich Yuriy
да вроде только "0"
ViGOur
Цитата(Litkevich Yuriy @ 9.4.2008, 14:33) *
да вроде только "0"
Объясняй почему. :)
Архимед
Цитата(Litkevich Yuriy @ 9.4.2008, 13:33) *
да вроде только "0"

Проверил сейчас: единицу выводит
ViGOur
Архимед, редиска! :)
Архимед
Я тож тебя люблю :wub:.
Чёгт, пароль в упор не помню :rolleyes:.
Litkevich Yuriy
хотя нет,
постинкремент по х и у в условии, потом x + y , тоды 2 получается
ViGOur
Ладно, пока ломайте голову, а я еще задачку дам, но в другой теме. :)

t;line-height:100%">Архимед, а ты запроси пароль новый выслать... ;)
Litkevich Yuriy
я с компилил, но как получился результат не понял :(
ViGOur
побольше народу отметится, я все расскажу. :)
Novak
в принципе, логично, что единица - второе выражение в И все же вычисляться совсем не должно...
Litkevich Yuriy
хм, да я нашел у себя в заначке шпаргалки по "С", когда писал первые програмки под микроконтроллер PICmicro, об этом моменте, еслиб там вместо у была бы функция, она бы тоже не вызывалась, а я про это уже забыл, просто выработал правило, в условиях ничего невычислять, по возможности, видимо оно меня и спасает от таких казусов.
rich
потому что if(x++) вернёт false, и поэтому if(x++ && (/*всё что угодно*/)) тоже вернёт false.
задачка очень порадовала. :)
ViGOur
Будет время найду еще парочку оригинальных задачек. :)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.