Не пользуемся компилятором!
Что будет выведено на экран?
#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;
}
И почему? Единица, будет выведена, ибо "y++" не будет вычислено т.к. уже заранее известен результат &&(поведение по Стандарту).
да вроде только "0"
Архимед, редиска!
Я тож тебя люблю .
Чёгт, пароль в упор не помню .
хотя нет,
постинкремент по х и у в условии, потом x + y , тоды 2 получается
Ладно, пока ломайте голову, а я еще задачку дам, но в другой теме.
t;line-height:100%">Архимед, а ты запроси пароль новый выслать...
я с компилил, но как получился результат не понял
побольше народу отметится, я все расскажу.
в принципе, логично, что единица - второе выражение в И все же вычисляться совсем не должно...
хм, да я нашел у себя в заначке шпаргалки по "С", когда писал первые програмки под микроконтроллер PICmicro, об этом моменте, еслиб там вместо у была бы функция, она бы тоже не вызывалась, а я про это уже забыл, просто выработал правило, в условиях ничего невычислять, по возможности, видимо оно меня и спасает от таких казусов.
потому что if(x++) вернёт false, и поэтому if(x++ && (/*всё что угодно*/)) тоже вернёт false.
задачка очень порадовала.
Будет время найду еще парочку оригинальных задачек.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)