' P '

whatever I will forget

C++ 関数からreturnされる引数の値で変数を初期化するとき

アホみたいなコードを書いていたので備忘録

double C = F_to_C(F_temp);

C変数を宣言しつつF_to_C関数の返り値で初期化したかった。

F_to_C(F_temp);
double C = F_temp;

こんな二行も使うコードは書いたらダメよって話

Returnだけで関数呼び出し元の変数の値は変わりませんよ!!!!

関数内でreturnするだけで呼び出し元の変数の値が変わると想定したらダメです!!!!(当たり前でしょうが。。)
なんかイメージ的にできそうと思っていたが、ちゃんと上記にのように 変数 Cに関数からの戻り(return)値を代入しましょう!!!!
*追記 値を直接渡している場合は確かにreturnされた値を変数に代入しないといけないが、
referenceで関数に値を渡した場合、関数内でreturnせずとも、呼び出し元の値は変更される。(が、warningが出る場合があるのでちゃんとreturnは書いた方が吉かも、、)

#include <iostream>
using namespace std;
 
void func(int &x, int &y, int &z) {
   x = y + z;
   y = 10;
   x = 20;
}
 
int main() {
   int a = 10, b = 20, c = 30;
   func(a, b, c);
   cout << a << " " << b << " " <<  c << endl;
   return 0;
}