Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > warning C4800


Автор: GoldFinch 28.7.2009, 22:01
есть код
Код

    class Arguments
    {
    public:
        Arguments() : mask_(0) {}

....

        bool Includes(const Variable& var) const
        {
            return (mask_ & (1LL<<var.id()));  // int Variable::id() const;
        }
    private:
        __int64 mask_;
    };


на строчке return (mask_ & (1LL<<var.id()));
выдается предупреждение 
warning C4800: __int64: принудительно задано логическое значение 'true' или 'false' (предупреждение о производительности)

почему так?

Автор: Alek86 28.7.2009, 22:22
потому что __int64 преобразуется в bool
чтобы этого ворнинга избежать, можно написать типа такого
Код
return (mask_ & (1LL<<var.id())) != 0;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)