if(1,2,3){???}
От: gok Россия  
Дата: 06.05.20 20:23
Оценка: :)
Что за конструкция? vc11, на выходе true
if (1, 2, 3)
   cout << "true" << endl;
else
   cout << "false" << endl;
gok
Re: if(1,2,3){???}
От: LuciferSaratov Россия  
Дата: 06.05.20 20:26
Оценка: 4 (1) +6
Здравствуйте, gok, Вы писали:

это оператор "запятая"
Re[2]: if(1,2,3){???}
От: gok Россия  
Дата: 06.05.20 22:15
Оценка: :)
Здравствуйте, LuciferSaratov, Вы писали:

LS>Здравствуйте, gok, Вы писали:


LS>это оператор "запятая"

впервые за 10!
gok
Отредактировано 06.05.2020 22:20 gok . Предыдущая версия .
Re[3]: if(1,2,3){???}
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.05.20 22:21
Оценка: +2
Здравствуйте, gok, Вы писали:

LS>>это оператор "запятая"

gok>в булевом выражении?

В целочисленном, я бы сказал.
Re[3]: if(1,2,3){???}
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 07.05.20 06:04
Оценка:
Здравствуйте, gok, Вы писали:

LS>>это оператор "запятая"

gok>впервые за 10!
gok>

Ничего себе! Никогда не было, например такого:
int i = 0, j = 10;


Или такого:
for (size_t i = 0, stop = v.size(); i < stop; ++i)
...
https://elibrary.ru/author_counter.aspx?id=875549
Отредактировано 07.05.2020 6:05 Nuzhny . Предыдущая версия . Еще …
Отредактировано 07.05.2020 6:04 Nuzhny . Предыдущая версия .
Re[4]: if(1,2,3){???}
От: σ  
Дата: 07.05.20 06:58
Оценка: +1
LS>>>это оператор "запятая"
gok>>впервые за 10!
gok>>

N>Ничего себе! Никогда не было, например такого:

N>
N>int i = 0, j = 10;
N>


N>Или такого:

N>
N>for (size_t i = 0, stop = v.size(); i < stop; ++i)
N>...
N>


Тут не оператор запятая
Инициализацию с присваиванием тоже путаешь?
Re[3]: if(1,2,3){???}
От: koenjihyakkei Россия  
Дата: 07.05.20 09:44
Оценка:
Здравствуйте, gok, Вы писали:

gok>впервые за 10!


Я раньше любил для экономии строк писать что-то типа такого

Foo& operator++() {
   return n++, *this;
}
Re: if(1,2,3){???}
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 10.05.20 06:39
Оценка: +1
Здравствуйте, gok, Вы писали:

gok>Что за конструкция? vc11, на выходе true

gok>
gok>if (1, 2, 3)
gok>   cout << "true" << endl;
gok>else
gok>   cout << "false" << endl;
gok>


Насчет запятых.

Обнаружил еще одно странное применение этого дела.

struct Base { virtual int g(); virtual ~Base() {} };
struct A : Base {
    // OK: declares three member virtual functions, two of them pure
    virtual int f() = 0, g() override = 0, h(); // <---------- ВОТ ТУТА
    // OK: destructor can be pure too
    ~A() = 0;
    // Error: pure-specifier on a function definition
    virtual int b()=0 {}
};


Никогда бы не подумал, что так можно
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[2]: if(1,2,3){???}
От: AlexGin Беларусь  
Дата: 18.05.20 09:32
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>
КД>struct Base { virtual int g(); virtual ~Base() {} };
КД>struct A : Base {
КД>    // OK: declares three member virtual functions, two of them pure
КД>    virtual int f() = 0, g() override = 0, h(); // <---------- ВОТ ТУТА
КД>    // OK: destructor can be pure too
КД>    ~A() = 0;
КД>    // Error: pure-specifier on a function definition
КД>    virtual int b()=0 {}
КД>};
КД>


КД>Никогда бы не подумал, что так можно


Можно != нужно
Это ухудшает читабельность и провоцирует ошибки.
Ну какая религия мешает записать вот так:
    virtual int f() = 0;
    virtual int g() override = 0;
    virtual int h();
Re[3]: if(1,2,3){???}
От: gok Россия  
Дата: 18.05.20 14:44
Оценка:
Здравствуйте, AlexGin, Вы писали:

КД>>Никогда бы не подумал, что так можно

AG>
AG>Можно != нужно
AG>Это ухудшает читабельность и провоцирует ошибки.
AG>Ну какая религия мешает записать вот так:
AG>
AG>    virtual int f() = 0;
AG>    virtual int g() override = 0;
AG>    virtual int h(); 
AG>


Полностью согласен.
Интересен источник сообщения. Вылезло при вычитке кода где использовалась ф-ция с дефолтными параметрами.
if(doFoo(d1, d2 /*, здесь дефолтное целое функции*/), thisInt)
{...}
else
{...}

скобочка была "успешно" поставлена не там. Это также пример "default arguments hell"
gok
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.