![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングペーパーテスト 次の問題の実行結果を答えろ #include int x[ ] = { 1 2022/06/16 21:49
- C言語・C++・C# プログラミングの授業のペーパーテスト 実行結果を答えろ #include int x[ ] = {1 3 2022/06/16 20:08
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C言語 3 2022/10/04 15:07
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C言語教えてください】sin波...
-
printf で二進表示を行いたい。
-
%P と %X の違い
-
C言語で四則演算を使って結果が...
-
入力したお金の金額からお札の...
-
8人分のテストの点数を入力し、...
-
円の面積を求めるプログラミン...
-
コンパイルエラーについて
-
C言語のプログラミングについて...
-
ビット演算で!?
-
3つの整数を画面から入力して...
-
文字を動かしたい
-
defineで定数が置き換えられな...
-
ヌメロンの対戦相手
-
既約分数の表示プログラム
-
C言語 プログラミング
-
ブラックジャック
-
strcmp
-
switch分のケースを範囲数?に...
-
万年カレンダーのC言語プログラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
【C言語教えてください】sin波...
-
printf で二進表示を行いたい。
-
c言語でAからZまでを表示する...
-
コマンドラインに出力した文字...
-
strcmp
-
4の倍数を論理演算で表す。。
-
C言語での、年複利の計算方法...
-
C言語 プログラミング
-
scanfに文字が入力されたときに...
-
hit&bolwのプログラミングがで...
-
%P と %X の違い
-
unsigned int型について
-
printf( " %2d", p * q );
-
cshの文字列操作(0埋め)
-
改行について 1行に何個かづ...
-
8人分のテストの点数を入力し、...
-
入力したお金の金額からお札の...
-
三角形の判別
-
テキストカーソル位置の取得
おすすめ情報