return 返値2つについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
doku

return 返値2つについて

#1

投稿記事 by doku » 14年前

VisualC++を使用しております、初心者です。
下記のコードで実行しますと出力結果として「 1 5 」が表示されてしまいます
私は「 5 5 」が表示される用に書いたつもりでしたので、なぜこうなってしまったのかどなたか教えては頂けませんでしょうか。

宜しくお願い致します。

コード:

#include<stdio.h>

int foo(int bra,int *c)
{
    int bar = 5;
   *c = 5;
   return bar,*c;
}
 
void main(int x,int &a)
{ 
    x,a = foo(x,&a);

    printf("%d %d\n",x,a);

}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: return 返値2つについて

#2

投稿記事 by softya(ソフト屋) » 14年前

C/C++には1つの戻り値を返す方法しかありません。
もし、2つ以上の値を返したい場合には構造体を使います。

[補足]
偶然、コンマ演算子扱いでコンパイルエラーになっていませんが意図した動作はしていないプログラムです。

「コンマ演算子とは - はてなキーワード」
http://d.hatena.ne.jp/keyword/%A5%B3%A5 ... B%BB%BB%D2
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

naohiro19
記事: 256
登録日時: 15年前
住所: 愛知県

Re: return 返値2つについて

#3

投稿記事 by naohiro19 » 14年前

GNU コンパイラーコレクションではコンパイルが通りません:
prog.cpp: In function ‘int foo(int, int*)’:
prog.cpp:7: warning: left-hand operand of comma has no effect
prog.cpp: At global scope:
prog.cpp:10: error: ‘::main’ must return ‘int’
prog.cpp:10: error: second argument of ‘int main(int, int&)’ should be ‘char **’
prog.cpp: In function ‘int main(int, int&)’:
prog.cpp:12: warning: left-hand operand of comma has no effect

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: return 返値2つについて

#4

投稿記事 by softya(ソフト屋) » 14年前

たしかにあちこちにやばい記述がありますね。

コード:

#include<stdio.h>
 
int foo(int bra,int *c) ←braが使われていません。
{
    int bar = 5;
   *c = 5;
   return bar,*c; ←2つの値を戻せません。
}
 
void main(int x,int &a) ← mainでこの記述は未定義です。int &aはc++でのみ許されます。 [補足]mainはどこからxとaを受け取りつもりでしょう?
{ 
    x,a = foo(x,&a); ← 2つの戻り値は戻りません。単なるコンマ演算です。
 
    printf("%d %d\n",x,a);
 
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

doku

Re: return 返値2つについて

#5

投稿記事 by doku » 14年前

申し訳ありません、返信操作ミスをしていたようです。
softya(ソフト屋)様、naohiro19様、ありがとうございました。
問題解決に向け構造体について勉強していきたいと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る