int型の変数n1の値が15であるとする。
このとき以下の文を実行した後のn1の値を答えよ。
#include <stdio.h>
int main(void) {
int n1 = 15;
printf("%d\n", n1+=10);
printf("%d\n", n1-=20);
printf("%d\n", n1*=4);
printf("%d\n", n1/=10);
printf("%d\n", n1%=6);
return(0);
}
25
5
20
2
2
で大丈夫ですか?
n1*=4の箇所が60にならないのはなぜですか?
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
なんかよくわからん文章なんだが (「以下の文」ってどれだ), どこから「60」が出てきたんだろう.
そしてそれを「参照渡し」「値渡し」とはいわない気がする>#3.
No.3
- 回答日時:
> n1*=4の箇所が60にならないのはなぜですか?
あなたがプログラムで仕事をしようと思っているなら、値渡し、参照渡しというキーワードを勉強しておいた方が良いと思います。
printf("%d\n", n1+=10);
この命令の計算結果は 25 ですが、この命令実行によって、n1 の値が 25 に上書きされます。
printf("%d\n", n1-=20);
この結果が 5 になるのも、25 に上書きされた n1 から 20 を引き算するからです。
(あなた、もしかして 15 - 20 = 5 だと誤解していませんか? 仮に 15 - 20 だったら -5 です。n1 は uint じゃなくて int なので。)
printf("%d\n", n1*=4);
ここでは、5 に上書きされた n1 に 4 を掛け算するから 20 になります。
このように計算する度に、その結果が上書きされていくような場合を参照渡しと呼び、上書きされないような場合を値渡しと呼びます。多くのプログラムでは、特に明示しない限りは自動的に参照渡しとなります。
No.2
- 回答日時:
大丈夫です。
合っています。n1+=10 は n1 = n1 + 10 と書くべきところ、n1 を2回書くのが面倒だからこれを省略して書くための省略記法です。
同様に n1*=4 は n1 = n1 * 4 と同じ意味です。
n1*=4 の直前のn1の値は5ですよね?
なので、n1*=4 の結果は当然20です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンパイルエラーについて
-
printf、最大値の出し方
-
8人分のテストの点数を入力し、...
-
教えてください!!
-
printf で二進表示を行いたい。
-
C言語初心者です。次の問題で質...
-
万年カレンダーのC言語プログラ...
-
答えを教えてください
-
改行について 1行に何個かづ...
-
unsigned int型について
-
C言語 この問題が分かりません...
-
いつもお世話になっております...
-
WM_CLOSEで閉じれないウィンド...
-
ifなんですが
-
BMI値から体型を判定するプログ...
-
ヘロンの公式を作ったプルグラ...
-
独学で最近c言語を始めたもので...
-
printfの有無で値が変化する
-
プログラムの演算時間を調べた...
-
インクリメント演算子をprintf...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンパイルエラーについて
-
printf で二進表示を行いたい。
-
c言語でAからZまでを表示する...
-
テキストカーソル位置の取得
-
4の倍数を論理演算で表す。。
-
cshの文字列操作(0埋め)
-
【C言語教えてください】sin波...
-
10個出力で改行したいのですが...
-
wsprintfの書式制御文字列につ...
-
error C2143: 構文エラー : ';'...
-
printfの出力内の文字をdefine...
-
%P と %X の違い
-
C言語
-
strcmp
-
(C言語)めちゃくちゃな値にな...
-
コマンドラインに出力した文字...
-
スレッドとメッセージキューに...
-
printf( " %2d", p * q );
-
Visual Sutdio 2017 でのC言語...
-
defineで定数が置き換えられな...
おすすめ情報