Ну тоді і я код додам:
if(int(a) ^ int(b) & ~( int(a) | int(c) )
{
f = static_cast<double>( static_cast<int>( f ) );
}
КиївОболонь написав:Дякую, але мені здається, що там має бути в кінці if ще вираз "!=0"?
Ненульовий вираз еквівалентний true, нульовий - false, і if одразу перевіряє, чи не дорівнює вираз 0, тому !=0 можна опустити (а ==0 замінити на !). Зазвичай, дійсно, треба ставити !=0, але тут виконується відверто безглузда операція, тому не бачу сенсу робити її зрозумілішою.
КиївОболонь написав:До речі, там же можна замість INT писати floor?
КиївОболонь написав:P.S. A INT заокруглює до ближчого цілого чи до меншого цілого?
Де ви в моєму коді INT побачили? C та C++ - реєстрозалежні, INT - не int. І отут якраз проблема - я точно стандарт не пам'ятаю, ліньки дивитися, але у вас ще й старий компілятор, можливо, він трохи відхиляється тут від стандарту, але перетворення від'ємних float-ів на цілі трохи заплутана справа. Ні, не до найближчого точно, але для додатних int(x) працює майже так само, як і floor(x) (тільки тип інший), а от для від'ємних - треба дивитися. Можливо, там і стандарт каже, що це визначається компілятором - чи int(-5.9) дорівнює -6 (найбільше ціле, що менше за число), чи -5 (менше за абсолютним значенням). А в завданні цього не сказано.
КиївОболонь написав:Як я зрозумів, "-" перед "c" -означає слово "не"?
Там не -, а ~. Побітове НІ.