質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

548閲覧

C言語で基本的なsizeof演算子の使い方を教えてください。

moonlight1125

総合スコア2

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2023/05/13 01:59

編集2023/05/13 03:00

実現したいこと

sizeof演算子を3つ用いて変数合計バイト数を求めたい

前提

学校の課題なのですが、間違いがある指摘されました。siseof演算子を3つ使えと言われいてるのですが僕は3つ使っていると思います。
課題の内容です
イメージ説明
また、お手本も全てintになっています
イメージ説明

該当のソースコード

ソースコード //標準入出力用のヘッダファイル #include <stdio.h> //メイン関数 int main (void) { int count_variable1; //count__variable1の個数を表すint型変数 int count_variable2; //count__variable2の個数を表すint型変数 int count_variable3; //count__variable3の個数を表すint型変数 int sum; //合計バイト数を代入するためのsumというint型変数 //変数の個数を入力 printf("それぞれの変数の個数"); //実行したときに (例) 1 1 1 というように入力します scanf("%d %d %d",&count_variable1,&count_variable2,&count_variable3); //合計のバイト数を求めてsumに代入 sum = sizeof(int) * count_variable1 + sizeof(int) * count_variable2 + sizeof(int) * count_variable3; //計算結果を表示 printf("variable1 %d個 、variable2 %d個、variavble3 %d個で、合計%dバイト\n", count_variable1,count_variable2,count_variable3,sum); //正常終了 return 0; }

試したこと

sizeof演算子が使われている箇所に間違いがあると言われ、考えてみたのですが、何が違うのかわかりませんでした。int変数は4バイトなので,1 1 1と入力すると、合計12バイトと出力されます。また、sizeof演算子は3使われていますよね?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2023/05/13 02:04

3 種類の変数はすべて int 型ですか?
thkana

2023/05/13 02:12

> 学校の課題を解決したい それは「プログラムの問題」ではありません。プログラムについて問題になっていることをタイトルにしましょう。 で、「sizeof演算子を3つ用いて変数合計バイト数を求めたい」では全く意味をなさないので、課題の全文を示してください。何をしようとしているのかが不明ではアドバイスのしようもありません。 > 1 1 1と入力すると、合計12バイトと出力されます なにを入力したとしても、count__variable1, ~2, ~3変数はそれぞれ1個です。その場合、"count__variable1の個数"とは何の意味をもっているのでしょう? 2 2 2と入力したら24と表示されますね。それは題意に沿っているのでしょうか。 余談。 > int変数は4バイト 今どきのメジャーな環境ではそうであることが多いですが、C言語一般としてsizeof(int)が4であるという決まりはありません。
melian

2023/05/13 02:33

題意を読み間違えているのではないでしょうか。。。
moonlight1125

2023/05/13 02:37

そのようなはずは無いと思うのですが,,,
melian

2023/05/13 02:45

問題文には「char型、int型、short型の個数は〜」と書かれていますが、解答には char型とshort型に対する処理が見当たりません。
YT0014

2023/05/13 02:49

問題文の入力メッセージに「char型・short型・int型の個数は?」とあります。 なぜ、intにそろえて構わないと判断されたのでしょうか?
jimbe

2023/05/13 03:02 編集

1 1 1 と入力したら合計 7 と表示されなければならないのにそうならないのですから、sizeof を三つ使っただけでは課題としては合格していないでしょう。 sizeof 単体の書き方も課題に対しての使う場所も間違ってはいませんが、課題が求めていることを書けていません。
moonlight1125

2023/05/13 03:01

お手本を見て頂ければ分かると思いますが、全てintになっています
jimbe

2023/05/13 03:04

>また、お手本も全てintになっています それは個数を入れる変数であって、sizeof で調べる対象ではありません。
thkana

2023/05/13 03:37

課題中に3つの例が示されているのですから、それと「全く同じ動作」をするプログラムを作りましょう。 例と全く同じ動作をするのに間違いと言われた、ということなら文句を言ってもいいですけれど、 「こういうものを作れ」と言われたものが出来ていないうちに文句をいうものではありません。 決して、「siseof演算子を3つ使え」ばなんでもいいという話ではないはずです。
guest

回答2

0

あなたのソースを修正しました。以下のようにしてください。

C

1 2//標準入出力用のヘッダファイル 3#include <stdio.h> 4 5//メイン関数 6 int main (void) 7{ 8 int count_variable1; //count__variable1の個数を表すint型変数 9 int count_variable2; //count__variable2の個数を表すint型変数 10 int count_variable3; //count__variable3の個数を表すint型変数 11 int sum; //合計バイト数を代入するためのsumというint型変数 12 13 14 //変数の個数を入力 15 printf("それぞれの変数の個数");//実行したときに (例) 1 1 1 というように入力します 16 scanf("%d %d %d",&count_variable1,&count_variable2,&count_variable3); 17 18 19 20 //合計のバイト数を求めてsumに代入 21 sum = sizeof(char) * count_variable1 + sizeof(int) * count_variable2 + sizeof(short) * count_variable3; 22 23 //計算結果を表示 24 printf("variable1 %d個 、variable2 %d個、variavble3 %d個で、合計%dバイト\n", 25 count_variable1,count_variable2,count_variable3,sum); 26 27 //正常終了 28 return 0; 29} 30

以下、実行結果です。
D:\goo\c>cal_bytes
それぞれの変数の個数1 1 1
variable1 1個 、variable2 1個、variavble3 1個で、合計7バイト

D:\goo\c>cal_bytes
それぞれの変数の個数3 2 1
variable1 3個 、variable2 2個、variavble3 1個で、合計13バイト

D:\goo\c>cal_bytes
それぞれの変数の個数9 0 3
variable1 9個 、variable2 0個、variavble3 3個で、合計15バイト

投稿2023/05/13 04:23

tatsu99

総合スコア5438

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

問題文の入力メッセージに

char型・short型・int型の個数は? 1 1 1
char型1個 int型1個 short型1個で 合計7バイト。

とあります。

あなたのプログラムは、

int型・int型・int型の個数は? 1 1 1
int型1個 int型1個 int型1個で 合計12バイト。

に対応したプログラムなので、求められている物とは違うと言うことでしょう。
「どういうことをするプログラムを作るのか」をきちんと把握しましょう。

あなたのコードのように、int型の個数を3つに分けて聞くことに意味があると思えないので、
3種類の型それぞれの個数を聞くのが正しいのでは?

投稿2023/05/13 04:20

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moonlight1125

2023/05/13 06:18

ありがとうございました。完全に勘違いしていました。ご指摘ありがとうございます。
otn

2023/05/13 13:48

最初に、問題を見たときに誤解して違うことをしてしまうのを完全に防ぐのは無理です。人間100%じゃないので。 ただ、間違っていることがわかった段階で、必ずどこかに間違いがあると、見直しを真摯にやれば自分で気づけるはずです。 「間違いという指摘が間違っていて、本当は自分は間違っていないのでは?」と思って、真摯に見直せず気づけない人がここの質問者に多数。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問