ここから本文です

c言語初心者です

met********さん

2009/5/1423:33:08

c言語初心者です

#define _CRT_SECURE_NO_DEPRECATE 1 /* VisualC++2005 での警告抑制 */
#include <stdio.h>

/* 指定された値を、そのまま、2倍、半分にして表示 */
/* また、戻り値として2倍した値を返す。 */
int myprint(int num)
{
printf( "%d\n", num ); /* そのまま表示 */
printf( "%d\n", num * 2 ); /* 2倍して表示 */
printf( "%d\n", num / 2 ); /* 半分にして表示 */
return num * 2; /* 2倍して返す */
}

/* プログラムはここから開始される */
int main(void)
{
int num;

printf( "整数を入力して下さい\n" );
scanf( "%d", &num ); /* & を忘れずに! */
num = myprint( num ); /* 自作のmyprint関数を呼び出し、2倍された値を戻り値として受け取る */
myprint( num ); /* 2倍された値を、再びmyprint関数に渡す。今度は戻り値を無視する */

return 0;

これの詳しい意味教えて下さい。

閲覧数:
730
回答数:
1

違反報告

ベストアンサーに選ばれた回答

rik********さん

2009/5/1423:45:59

まず、main関数で、
printf( "整数を入力して下さい\n" );
ここで数値を入力します。

scanf( "%d", &num );
入力した数値を読み込み、numに格納(代入)します。

num = myprint( num );
ここで、右辺にあるmyprint関数へnumに格納されている数値を送ります。

するとmyprint関数で
printf( "%d\n", num );
送られてきた数値を表示します。

printf( "%d\n", num * 2 );
送られてきた数値の2倍の数値を表示します。

printf( "%d\n", num / 2 );
送られてきた数値の半分(少数以下は切り捨て)を表示します。

return num * 2;
送られてきた数値を2倍にしてmain関数に返します。


main関数にて
num = myprint( num );
myprint関数へ送った数値を2倍された数値がnumへ新しく上書きされて格納されます。

myprint( num );
現時点でnumに格納されている数値を再びmyprint関数へ送ります。
myprint関数にて前記述の表示作業をします。

が、最後のmain関数へ 返す値を格納する場所がmain関数内で与えられていません。
よって、返ってくるはずの値は無視されます。

これでプログラムは終了します。



表示例:
整数を入力してください 5
5
10
2
10
20
5

質問した人からのコメント

2009/5/15 23:48:40

感謝 事実に分かりやすい説明でした!ありがとうございました!!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる