Video Coming Soon...

Created by Zed A. Shaw Updated 2026-04-18 04:15:27

22: Pass by Value, Pass by Reference

View Source file ex22.cpp Only

#include <fmt/core.h>

using fmt::println;

int bad_adder(int a, int b, int result) {
  if(a < 0 || b < 0) {
    return -1;
  } else {
    result = a + b;
    return 0;
  }
}

int error_adder(int a, int b, int& result) {
  if(a < 0 || b < 0) {
    return -1;
  } else {
    result = a + b;
    return 0;
  }
}

void print_result(const std::string& func_name, int a, int b, int err, int result) {
  println("{}: a={},b={}, err={}, result={}", func_name, a, b, err, result);
}


int main(int argc, char* argv[]) {
  int result = 0;
  int err = 0;

  err = bad_adder(10, 20, result);
  print_result("bad_adder", 10, 20, err, result);

  err = bad_adder(-10, 20, result);
  print_result("bad_adder", -10, 20, err, result);

  err = error_adder(24, 14, result);
  print_result("error_adder", 24, 14, err, result);

  err = error_adder(-24, 14, result);
  print_result("error_adder", -24, 14, err, result);
}
Previous Lesson Next Lesson

Register for Learn C++ the Hard Way

Register to gain access to additional videos which demonstrate each exercise. Videos are priced to cover the cost of hosting.