Return values let a function send a computed result back to the caller.

return value The expression after `return` becomes the value of the function call.

Return Values

example
return_values.cpp
Replay: real traced execution (multi-file project)
#include <iostream>

int addShipping(int subtotal, int shipping) {
    return subtotal + shipping;
}

int main() {
    int subtotal = 30;
    int shipping = 5;
    int total = addShipping(subtotal, shipping);

    std::cout << "subtotal=" << subtotal << std::endl;
    std::cout << "shipping=" << shipping << std::endl;
    std::cout << "total=" << total << std::endl;
    return 0;
}
#include <iostream>

int addShipping(int subtotal, int shipping) {
    return subtotal + shipping;
}

int main() {
    int subtotal = 12;
    int shipping = 5;
    int total = addShipping(subtotal, shipping);

    std::cout << "subtotal=" << subtotal << std::endl;
    std::cout << "shipping=" << shipping << std::endl;
    std::cout << "total=" << total << std::endl;
    return 0;
}
#include <iostream>

int addShipping(int subtotal, int shipping) {
    return subtotal + shipping;
}

int main() {
    int subtotal = 45;
    int shipping = 5;
    int total = addShipping(subtotal, shipping);

    std::cout << "subtotal=" << subtotal << std::endl;
    std::cout << "shipping=" << shipping << std::endl;
    std::cout << "total=" << total << std::endl;
    return 0;
}
#include <iostream>

int addShipping(int subtotal, int shipping) {
    return subtotal + shipping;
}

int main() {
    int subtotal = 30;
    int shipping = 0;
    int total = addShipping(subtotal, shipping);

    std::cout << "subtotal=" << subtotal << std::endl;
    std::cout << "shipping=" << shipping << std::endl;
    std::cout << "total=" << total << std::endl;
    return 0;
}
#include <iostream>

int addShipping(int subtotal, int shipping) {
    return subtotal + shipping;
}

int main() {
    int subtotal = 30;
    int shipping = 8;
    int total = addShipping(subtotal, shipping);

    std::cout << "subtotal=" << subtotal << std::endl;
    std::cout << "shipping=" << shipping << std::endl;
    std::cout << "total=" << total << std::endl;
    return 0;
}
  1. subtotal ← 30, shipping ← 5

    7int main() {8    int subtotal→ 30 = 30; //@subtotal=12, 459    int shipping→ 5 = 5; //@shipping=0, 810    int total = addShipping(subtotal30, shipping5);
  2. int addShipping(int subtotal, int shipping)

    3int addShipping(int subtotal30, int shipping5) {4    return subtotal30 + shipping5;5}
  3. total ← 35

    9    int shipping = 5; //@shipping=0, 810    int total→ 35 = addShipping(subtotal30, shipping5);1112    std::cout << "subtotal=" << subtotal30 << std::endl;13    std::cout << "shipping=" << shipping5 << std::endl;14    std::cout << "total=" << total35 << std::endl;15    return 0;16}
    outputsubtotal=30
    shipping=5
    total=35
  1. subtotal ← 12, shipping ← 5

    7int main() {8    int subtotal→ 12 = 12;9    int shipping→ 5 = 5;10    int total = addShipping(subtotal12, shipping5);
  2. int addShipping(int subtotal, int shipping)

    3int addShipping(int subtotal12, int shipping5) {4    return subtotal12 + shipping5;5}
  3. total ← 17

    9    int shipping = 5;10    int total→ 17 = addShipping(subtotal12, shipping5);1112    std::cout << "subtotal=" << subtotal12 << std::endl;13    std::cout << "shipping=" << shipping5 << std::endl;14    std::cout << "total=" << total17 << std::endl;15    return 0;16}
    outputsubtotal=12
    shipping=5
    total=17
  1. subtotal ← 45, shipping ← 5

    7int main() {8    int subtotal→ 45 = 45;9    int shipping→ 5 = 5;10    int total = addShipping(subtotal45, shipping5);
  2. int addShipping(int subtotal, int shipping)

    3int addShipping(int subtotal45, int shipping5) {4    return subtotal45 + shipping5;5}
  3. total ← 50

    9    int shipping = 5;10    int total→ 50 = addShipping(subtotal45, shipping5);1112    std::cout << "subtotal=" << subtotal45 << std::endl;13    std::cout << "shipping=" << shipping5 << std::endl;14    std::cout << "total=" << total50 << std::endl;15    return 0;16}
    outputsubtotal=45
    shipping=5
    total=50
  1. subtotal ← 30, shipping ← 0

    7int main() {8    int subtotal→ 30 = 30;9    int shipping→ 0 = 0;10    int total = addShipping(subtotal30, shipping0);
  2. int addShipping(int subtotal, int shipping)

    3int addShipping(int subtotal30, int shipping0) {4    return subtotal30 + shipping0;5}
  3. total ← 30

    9    int shipping = 0;10    int total→ 30 = addShipping(subtotal30, shipping0);1112    std::cout << "subtotal=" << subtotal30 << std::endl;13    std::cout << "shipping=" << shipping0 << std::endl;14    std::cout << "total=" << total30 << std::endl;15    return 0;16}
    outputsubtotal=30
    shipping=0
    total=30
  1. subtotal ← 30, shipping ← 8

    7int main() {8    int subtotal→ 30 = 30;9    int shipping→ 8 = 8;10    int total = addShipping(subtotal30, shipping8);
  2. int addShipping(int subtotal, int shipping)

    3int addShipping(int subtotal30, int shipping8) {4    return subtotal30 + shipping8;5}
  3. total ← 38

    9    int shipping = 8;10    int total→ 38 = addShipping(subtotal30, shipping8);1112    std::cout << "subtotal=" << subtotal30 << std::endl;13    std::cout << "shipping=" << shipping8 << std::endl;14    std::cout << "total=" << total38 << std::endl;15    return 0;16}
    outputsubtotal=30
    shipping=8
    total=38

Follow the Return

  1. subtotal starts as 30.
  2. shipping starts as 5.
  3. addShipping(subtotal, shipping) adds those two values.
  4. The returned total is 35.
  5. The program prints subtotal=30, shipping=5, and total=35. | subtotal | shipping | total | | --- | --- | --- | | 30 | 5 | 35 | | 12 | 5 | 17 | | 30 | 8 | 38 |

Exercise: return_values.cpp

Reproduce subtotal=30, shipping=5, and total=35, then change only subtotal to 12 to predict total=17, and change only shipping to 8 to predict total=38.