Не работает код, возврат функции, C++

236
12 декабря 2017, 19:41

При компиляции открывается консоль, которая выводит два отрицательных восьмизначных числа. Что не так?

#include <iostream>
using namespace std;
pair<int, int> sumdif(int a, int b){
    return pair<int, int>(a + b, a - b);
}
int main() {
    int a = 5;
    int b = 7;
    int c, d;
    pair <int, int>(c,d)  = sumdif(a, b);
    cout << c << endl << d;
    system("pause");
}
Answer 1
pair <int, int>(c,d)  = sumdif(a, b);

Тут у вас создана временная пара, которая получила значение и тут же потеряна...

Вот варианты:

auto p = sumdif(a, b);
cout << p.first << " " << p.second << endl;

Для С++17 можно так:

auto [c,d]  = sumdif(a, b);
cout << c << " " << d << endl;;

Экзотика с вашей парой - вывод только одного поля:

cout << (pair<int,int>(c,d) = sumdif(a, b)).first;
READ ALSO
Проблема с очередью на с++ [требует правки]

Проблема с очередью на с++ [требует правки]

Пишу очередь с приоритетамиВозникла проблема

192
Ошибка &ldquo;on a null object reference&rdquo; при работе с Room

Ошибка “on a null object reference” при работе с Room

Пытаюсь получить доступ к уже существующей bd через Room, но при выполнении кода просходит ошибка

300
Записанное видео подлагивает (FFMPEG)

Записанное видео подлагивает (FFMPEG)

Исходник взят отсюда

208
Скрытие клавиатуры и перенос каретки в EditText

Скрытие клавиатуры и перенос каретки в EditText

Нужно при нажатии "Enter" скрыть клавиатуруВсё работает, но при закрытии клавиатуры каретка переходит на новую строку

284