アプリ版:「スタンプのみでお礼する」機能のリリースについて

例えば2つの値を入れ替えるswap関数で

――――――――――――――――――――――――
void swap (int x, int y)
{
  int tmp;
  
  tmp = x;
  x = y;
  y = tmp;
}

int num1 = 5;
int num2 = 10;

cout << "num1の値は" << num1 << "です\n";
cout << "num2の値は" << num2 << "です\n";

swap(num1, num2);

cout << "num1の値は" << num1 << "です\n";
cout << "num2の値は" << num2 << "です\n";
――――――――――――――――――――――――

というものが有りますが(実際はポインタを使わないと入れ替わらないようですが)、
この関数で仮引数に実引数5と10を渡し、関数内部のxとyに5と10を代入しますよね?
この時、5と10の値を渡すのは右辺のxとyであり、左辺のxとyには渡さないのでしょうか?
要するに

  tmp = x;
  x = y;
  y = tmp;

の部分で5と10を渡すのは右辺のxとyであり、左辺のxとyには渡さず、左辺はそのままxとyのままなのでしょうか?
もし左辺のxとyにも5と10を渡すとなると、
5に10を代入し、10に5を代入する
という意味の分からないことになりますが。

詳しい方がいらっしゃいましたら、ご教授お願いいたします。

A 回答 (2件)

C++言語の = は、等号という意味ではありません。

。。
代入演算子ですので、右の「値」を左の「変数」に入れるという動作になります。

 一行目は、tmpに 5 を代入。(x:5 y:10 tmp:5)
 二行目は、xに10を代入(x:10 y:10 tmp:5)
 三行目は、yに5を代入(x:10 y:5 tmp:5)

となります。
    • good
    • 2
この回答へのお礼

ご教授有難うございました。

お礼日時:2020/05/26 11:27

質問者様は「ある変数に値を代入する」記述仕様を理解していおられない・・・ということです。


学習に使用されている教科書等の最初の方の説明をよく読まれることです。
最初の方を「これくらいわかる」と軽く読み飛ばされたのでしょう。

で。

>   tmp = x;

 これは「変数tmpに変数xの値を入れる」という指示です。


>   x = y;

 同様に「変数xに変数yの値を入れる」という指示です。


>   y = tmp;

 同様に「変数yに変数tmpの値を入れる」という指示です。

参考まで。
    • good
    • 0
この回答へのお礼

ご教授有難うございました。
私もまだまだ理解が浅いということですね。
引き続き頑張ります。

お礼日時:2020/05/26 11:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!