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

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

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

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

Q&A

解決済

4回答

13389閲覧

C言語で、「関数呼び出しの引数が少なすぎる」エラーが出てしまう

tsurugiyaru

総合スコア4

C

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

0グッド

1クリップ

投稿2021/10/16 07:22

円の面積、球の表面積、球の体積の計算結果を格納する配列vを宣言し、
変数pi、rにπ(3.14159)、半径(ここでは2.0)を代入し、キャスト演算子を使って計算、
最後に、インクリメント演算子を使って計算結果を表示させるプログラムを作成しました。
しかし、計算結果はうまく表示されるのですが、途中に赤線で
「関数呼び出しの引数が少なすぎます。」「;が必要です。」のエラーが出てしまいます。
以下が問題のコードです。

C

1#include <stdio.h> 2 3int main(void) 4{ 5 double v[3] = {0, 0, 0}; 6 double pi, r; 7 pi = 3.14159; 8 r = 2.0; 9 v[0] = r * r * pi; 10 v[1] = (double)4 * pi * r * r; 11 v[2] = (double)4 * pi * r * r * r / 3; 12 13 int n = 0; 14 printf("半径2.0の円の面積は%f", v[n]); 15 printf("、球の表面積は%f", v[++n]); //ここの;の後に赤波線で「関数呼び出しが少なすぎます。」 16 printf("、球の体積は%fです。\n",v[++n]); 17 return 0; //returnに赤波線で「;が必要です。」 18}

計算結果はエラーなしで正しく表示されるのですが、赤線のエラーが消えません。
どこを訂正すればいいのかわからず困っています。

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

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

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

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

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

pepperleaf

2021/10/16 07:33

Visual Studio 2019 だと何の警告も無いですが、環境はどうなっているのでしょうか? もしかして、全角/半角の問題で、コンパイラは、OKだけど、表示がエラーになるとか?
hidezzz

2021/10/16 07:49 編集

エラーメッセージは省略したりせずそのままコピー&ペーストしてください。省略した部分に回答者が回答するにあたって必要な情報があるかもしれません。(質問者は質問文を後から編集できます。) 「エラー」メッセージが出てもビルドが成功して実行出来るということは、エラーでは無く警告(warning)ではないでしょうか?(前述した省略部分を見ればそのへんが判明すると思います。) あと、念のための確認ですが、提示されているソースコードは実際のソースコードからそのままコピー&ペーストしているんですよね?
tsurugiyaru

2021/10/16 08:32

Visual Studioでやっています。 エラーではなく警告でした、すみません。 そのままコピペしています。 一度VScodeをとじて再度開いたところ、警告が消えていました、、、 お手数おかけしたにも関わらず、このような形で解決になってしまい申し訳ありません。
guest

回答4

0

とりあえず
v[++n]
と書く癖はやめた方がいい。
他の人間がソースコード見たら、いちいち考えないと意味わからんから。

普通に
printf("半径2.0の円の面積は%f", v[n]);
n++;
printf("、球の表面積は%f", v[n]);
n++;
printf("、球の体積は%fです。\n", v[n]);
と書くようにして下さい。

投稿2021/10/16 07:54

編集2021/10/16 07:58
qqfsdfsafd

総合スコア599

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

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

tsurugiyaru

2021/10/16 08:34

教科書の解答例に、v[n++]が載っていたので使用しましたが、 n++も、++nも書いていただいたように書いた方がいいのでしょうか。
Zuishin

2021/10/16 08:55

n ではなく即値で v[0] v[1] v[2] でいいと思いますが、むしろこの場合配列である必要は皆無です。 質問の回答として成り立っていない上、ズレた指摘でしかないので低評価しました。
qqfsdfsafd

2021/10/16 20:40 編集

そういう意味じゃなくて、n++と++nの違いをいちいち覚えてる人は少ないので、その違いを意識しないといけない書き方はやめろということです。 このような書き方は、エレベーターに向かって歩いている人に道を聞かれて「エレベーターを降りたら左に行って下さい」という説明と同じくらい勘違いしやすい書き方になります。エレベーターに向かって歩いている人からすると「それはつまりこっちから見て右ですね?」と聞き返したくなるような勘違いしやすい書き方です。
tsurugiyaru

2021/10/16 09:15

学校の課題で、計算結果を配列にすること、nを使いインクリメント演算子を使って計算結果を表示すること、という条件があったためこのようなめんどくさいコードになっております。 今後プログラミングの勉強をする際、このような指摘はためになるので、とてもありがたく感じました。 (ただ、おっしゃる通り回答としては成り立っていないため、アンサーではなくコメントとかに書いていただけると確かにありがたかったかもしれません、、、笑)
int32_t

2021/10/16 15:01

> n++と++nの違いをいちいち覚えてる人は少ない 仕事でC/C++を書いている人で、その違いを即座に理解できない人には私は会ったことないですね。
qqfsdfsafd

2021/10/16 15:50

私は逆ですね。 仕事でC/C++を書いている人で、その違いを即座に理解できる人に会ったことありません。
qqfsdfsafd

2021/10/16 21:01 編集

その違いを即座に識別できる人間ってさ「俺は他人には理解できない暗号化したソースコードを書いてるぜ!」って自慢してるだけだよ。 コーディングって本当の意味を知ってるか? code:コード, 記号, 暗号, 規約, 暗証, 符丁 暗号化って意味も含まれてるんだよ。 こんなどうでもいいことを意識しなきゃいけないソースコードを書くやつに対して、俺の師匠は思いっきり皮肉を言ってたよ。 「〇〇の書くソースコードは実によくコーディングされてる」ってね。
qqfsdfsafd

2021/10/16 21:01 編集

まぁ俺は、実行ファイルをテキストエディタで開いても見られたくない単語を含むアプリをリリースするときはその文字だけを本当に暗号化してソースコード上に埋め込むこともあるけどね。 そういうメリハリの付いた使い分けが出来ないやつは素人。 C/C++を使う仕事に携わってるだけでプロじゃない。
qqfsdfsafd

2021/10/16 20:31

あ、一応、暗号化って言うとそれは暗号化じゃなくて難読化ですよ。って反論するやつもいるだろうけど、逆アセンブルして解析しなきゃわからないレベルの難読化はもはや暗号化と呼んでもいいでしょう。
qqfsdfsafd

2021/10/16 20:32

いまどきアセンブラがわかる人間なんかほとんどいないし。
qqfsdfsafd

2021/10/16 21:00 編集

これさ、低評価が4つも付いてるけど、この主張を理解出来た賢い人は低評価を外して下さいね。
qqfsdfsafd

2021/10/17 02:59

なんか、低評価が9に増えてるけど、なんで低評価が増えるのか全く意味不明。 低評価付けるならコメント残して下さいね。全部論破してあげるので。
Zuishin

2021/10/17 03:35

お前のレベルだと素晴らしい回答なんだろうけど、ここのレベルから見ると低すぎたというだけ。 説明は私が済ませたから、これが理解できないならもう説明するだけ無駄。
qqfsdfsafd

2021/10/17 03:44

いや、お前の説明は的はずれだったって、質問者がコメントしてるじゃん。わからんやつだな。
Zuishin

2021/10/17 03:45

お前の回答が的外れって言われてるんだよ
qqfsdfsafd

2021/10/17 03:49

質問者の感謝の言葉をよく読みなさい。
Zuishin

2021/10/17 03:51

そういう気を使ってるのを見たらわかるだろ。
qqfsdfsafd

2021/10/17 04:01

Zuishinさんって本当に暇なんだね。 毎日毎日、このサイトに入り浸って。よく飽きないな。
can110

2021/10/17 04:03

質問者もいってますが「回答としては成り立っていない」ため低評価しました。
qqfsdfsafd

2021/10/17 04:12

昔から言ってるけど。 このサイトの構成がおかしくて「質問への追記・修正依頼」か「回答」かと言えば回答なので、回答欄に書くべきです。 「質問への追記・修正依頼」に回答を書く習性を持っている人達の方がおかしいです。
BeatStar

2021/10/17 04:29

(低○な私でも流石に++nとn++は違うってわかるけど…)
can110

2021/10/17 04:30

質問で提示された問題とは関係なく、解決の役に立たない内容なので低評価しました。 質問者のコードにご意見あるなら、このサイトに書かずにご自身のブログなりでこの質問を引用するなりしてご自由に「回答」すべきかと思います。 他の人はどうか知りませんが、あなたも同類(おかしい)と思います。
dodox86

2021/10/17 04:45

> 昔から言ってるけど。 ... > 「質問への追記・修正依頼」に回答を書く習性を持っている人達の方がおかしいです。 やっぱり。転生垢であることを確信しました。
qqfsdfsafd

2021/10/17 05:17

>質問者のコードにご意見あるなら、このサイトに書かずにご自身のブログなりでこの質問を引用するなりしてご自由に「回答」すべきかと思います。 質問者に教えてあげるためにそんなめんどくさいことをするのは全く意味不明なので却下します。
can110

2021/10/17 05:28

少なくともこの質問でのあなたの回答は「不要」だということです。 質問者もいっている「回答としては成り立っていない」ものを わざわざ「教えてあげる」理由が不明ですし、おかしな人だと思います。 そもそも、めんどくさいなら「回答」しなければよいと思います。
qqfsdfsafd

2021/10/17 06:11

>(低○な私でも流石に++nとn++は違うってわかるけど…) 違うのは誰でもわかる。 どっちがどっちか瞬時にわかるのは覚えたてのど素人か、他人の迷惑を考えずに、いつも使いわけが必要な変な書き方をしてる自己満足野郎だけだってこと。
qqfsdfsafd

2021/10/17 06:13

いや、不要じゃないよ。 質問者にとっては最初の質問なんかどうでもいいくらい凄く勉強になってるよ。
can110

2021/10/17 06:30

「質問者」にとってではなく「赤線のエラーが消えません」といった「質問」に対してです。 繰り返しになりますが、質問で提示された問題とは関係なく、解決の役に立たない内容なので低評価しています。
episteme

2021/10/17 08:01

> この主張を理解出来た賢い人は低評価を外して下さいね。 主張は理解した。が、質問に対する回答ではない。低評価。
fana

2021/10/18 02:53 編集

> n++も、++nも書いていただいたように書いた方がいいのでしょうか。 …という問いが放置されているようにも見える(?)ので,個人的な見解を書いてみる. 見解:【ご自身の好きにすればいい】程度の話かと思います. ご自身(あるいは想定されるコードの読み手)にとって,「++n と n++ の違い」が面倒事を起こしそうなのであれば,「v[n] と ++n を分けて書く」形の方が無難ではあります. しかし,そういう心配が無い状況下においては,本当にただの好みの問題(というか,その人のスタイル(?)というか)でしょう.
退会済みユーザー

退会済みユーザー

2021/10/19 08:03 編集

> C/C++を使う仕事に携わってるだけでプロじゃない。 FTPS通信のライブラリ自力で探す事も出来ずに質問しにくるプロは見た事ないですね。
ry188472

2021/10/19 08:26

常々思っていたんですが、なんでこういう荒らしを皆さんいい大人のくせにスルーできないんでしょうか? こういう低評価の多い回答って喧嘩したい人が何度も投稿確認しに来るからVIEWが上がって注目度の高い投稿として目に入ってくるんですけども。 はっきり言ってスルーできない皆さんの存在が迷惑なので話が通じないとわかった時点で通報してスルーしてほしいです。
Zuishin

2021/10/19 08:31

ブーメラン
guest

0

仕事でC/C++を書いている人で、その違いを即座に理解できる人に会ったことありません。

あまり胸張って言うようなことじゃないと思いますが。
この辺の違いって、初歩の初歩ですよ。
(時代的に重要視されなくなってるかもしれませんが。でもそれはそれで技術者としてどうかなぁ。Javaとか他の言語でも使われている演算子ですし。しかも同じ考えで)

投稿2021/10/16 16:21

archiver

総合スコア1557

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

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

archiver

2021/10/16 16:23

あ、いけね。qqfsdfsafdさんへのコメント返すつもりが回答欄に書いちゃった。
qqfsdfsafd

2021/10/16 20:02

https://dev.grapecity.co.jp/support/powernews/column/clang/020/page05.htm その初歩ってさ、↑これを全部覚えろっていうくらいの愚行だし、全員が覚えてると思う方が傲慢。 俺が、最初にC言語を使った職場で教わったことは、こんなもの一個も覚えなくていいから全部()を付けて優先順位を明確にしておけ!だったよ。 それを知らない技術者の方がどうかしてる。
qqfsdfsafd

2021/10/16 20:06

逆に最初にその基本中の基本をしっかり習った人間はソースコードを読む他人に++nとn++の違いや演算子の優先順位を意識させるようなコードは絶対に書かないから、そんなどうでもいいことはすぐに忘れるしな。
qqfsdfsafd

2021/10/16 20:07

俺の意見に反論するやつって本当の初歩の初歩がわかってないってことだよ。
thkana

2021/10/16 22:10

> これを全部覚えろ え? 覚えてないの? > 全部()を付けて優先順位を明確にしておけ コーディングルールとしてはよくある。 覚えていないヒトが実際にいるからカッコ付けが有用である、ということを再認識しました。
qqfsdfsafd

2021/10/17 00:12

>え? 覚えてないの? 当たり前じゃん。なんでこんなどうでもいいものを覚えなきゃならんの? アインシュタインが記者に光の速度を聞かれて「覚えてない」と答えて、記者が驚きと優越感に浸ったとき、アインシュタインがなんて答えたか知ってますか? 「本を開けば書いてあることをなんで覚えなきゃならんの?」ですよ。 私とあなたは、アインシュタインとその記者くらいの差があるとご理解下さい。
Zuishin

2021/10/17 00:50

光の速度は c と覚えてたら数式で使える。 いちいち本を開かなきゃ演算子も書けないお前と一緒にするんじゃない。
thkana

2021/10/17 01:16

普通プロならそれくらい覚えているものだ、という思い込みを打ち砕いていただきました。 視野が広がりました。ありがとうございます。 > 覚えていないヒトが実際にいるからカッコ付けが有用である、ということを再認識しました。 が結論でOKでしょ。なにか問題あります?
qqfsdfsafd

2021/10/17 02:15

>> 覚えていないヒトが実際にいるからカッコ付けが有用である、ということを再認識しました。 >が結論でOKでしょ。なにか問題あります? 「有用である」じゃないよ。MUSTだよ。必ず付けなきゃいけないんだよ。付けないとお前自身がいつか勘違いしてバグを埋め込むから。
thkana

2021/10/17 02:35

そうですね。いつ演算子の使い方を覚えていないヒトにメンテナンスを任せなきゃいけなくなるか、未来なんてわかりませんものね。
qqfsdfsafd

2021/10/17 03:01 編集

そうじゃない。いつか、お前が忘れて勘違いするんだよ。 プロなら覚えてて当然という認識も大きな間違い。プロであればあるほど、誰も間違えないようにしっかりと確実に()で優先順位を明確に記述するから、初心者の頃に覚えたどうでもいい優先順位なんか全部忘れる。そして、優先順位を気にしないといけないソースコードなんか見たくもないから、コーディング規約に()を付けろと書くんだよ。演算子の優先順位なんかを律儀に覚えてるのはまだまだひよっこの証拠。
Zuishin

2021/10/17 03:02

ひよっこでもしないようなしょうもないバグを仕込んで何度も質問したやつがなぜそんな上から目線なんだ
qqfsdfsafd

2021/10/17 03:04

>いちいち本を開かなきゃ演算子も書けないお前と一緒にするんじゃない。 書けますが? 優先順位を気にしなきゃいけないような書き方はしないし、そんなソースコードは見たくもないと言ってるだけなのがわかりませんか?
qqfsdfsafd

2021/10/17 03:06

>ひよっこでもしないようなしょうもないバグを仕込んで何度も質問したやつがなぜそんな上から目線なんだ そりゃあVBAは初心者だからだよ。初心者マーク付けてたろ? C++はプロだよ。
Zuishin

2021/10/17 03:06

((((a * b) / c) + d) - e) っていうコードは見たいのか。
qqfsdfsafd

2021/10/17 03:18

そっちの方がましだな。 実際、見たことあるよ。
Zuishin

2021/10/17 03:20

初心者とプロという区別をしていることで、プロでないことがわかる。
thkana

2021/10/17 03:23

> 優先順位を気にしなきゃいけないような書き方はしないし、そんなソースコードは見たくもない そりゃ覚えてないんですから書けないし見たくないですよね。
qqfsdfsafd

2021/10/17 03:25

ちなみにそういうソースコードを見たのはCOBOLの話な。 COBOLって文系の人間が触るものだったから小学生レベルの算数で躓いた人間でも間違えないように書かなきゃいけなかったらしい。
Zuishin

2021/10/17 03:30

小学生レベルの算数で躓いた人間なんか見たことがない。 住む社会が違うってことだな。
dodox86

2021/10/17 03:38

なぜ、全部レベルの低いところを基準にして話を進めるのか。レベルの低いものに合わせて作業を進めるべきかどうかは組織の話。技術者各々がそれで良いはずがない。COBOLの話だって、COBOLを扱っているプログラマーの方々全員がそうであるはずがない。たまたま扱っている言語が違うだけ。C言語/C++だってVBAだって同じ。アセンブリ言語だって人が悪ければまともには扱えない。
qqfsdfsafd

2021/10/17 03:53

>初心者とプロという区別をしていることで、プロでないことがわかる。 あー、はいはい。俺はVBAの初心者だけどVBAのプロですよ。 VBAで飯食ってるし、VBAのシステムをほぼ完成させて、もう試運転の時期に入ってますから。 VBAは初心者だけどC++はベテランです。これでいいですか?
qqfsdfsafd

2021/10/17 03:56

>> 優先順位を気にしなきゃいけないような書き方はしないし、そんなソースコードは見たくもない >そりゃ覚えてないんですから書けないし見たくないですよね。 あー、それも違う。若い頃は頑張って覚えてたし、()を使わないことがカッコイイと思ってたりもした。 だけど、覚える必要がないし、覚えない方がいいっていうことがわからんかね? 人間の記憶ってデタラメなんだよ。 若いうちは覚えてても年取ると使わないものは忘れるんだよ。 そういうベテランのアドバイスは素直に受け取りなさい。
qqfsdfsafd

2021/10/17 03:58

>小学生レベルの算数で躓いた人間なんか見たことがない。 >住む社会が違うってことだな。 小学生のとき、全国模試で満点を取って日本一になった俺からすれば、ほぼ全ての人が小学校の算数で躓いてる人間だよ。
qqfsdfsafd

2021/10/17 03:59

>なぜ、全部レベルの低いところを基準にして話を進めるのか。レベルの低いものに合わせて作業を進めるべきかどうかは組織の話。技術者各々がそれで良いはずがない。COBOLの話だって、COBOLを扱っているプログラマーの方々全員がそうであるはずがない。たまたま扱っている言語が違うだけ。C言語/C++だってVBAだって同じ。アセンブリ言語だって人が悪ければまともには扱えない。 だから、トップの人間から見たら、全員を救う方策を考えなきゃいけないって話。
Zuishin

2021/10/17 04:00

見栄張りなやつはどうにもならんね。見たらすぐわかるのに。
Zuishin

2021/10/17 04:03

C++ の質問はたくさんあるから、それにいくつか回答してみろよ。 10 回くらい回答したらベテランのプロかどうか誰の目にもわかるから。
dodox86

2021/10/17 04:04

> 小学生のとき、全国模試で満点を取って日本一になった俺からすれば、 なんか既視感のあるやり取りかと思っていましたが、qqfsdfsafdさんはいつぞやの氏の転生アカウントとみました。転生ではないとしても、同傾向の方とお見受けしました。以降はスルーさせていただきます。
qqfsdfsafd

2021/10/17 04:05

すみません。 嘘つきました。満点は嘘です。 算数、国語、理科、社会、各25問1問4点、400点万点のうち、社会の問題だけ1問間違えて396点でした。すみませんでした。
qqfsdfsafd

2021/10/17 04:08

>C++ の質問はたくさんあるから、それにいくつか回答してみろよ。 >10 回くらい回答したらベテランのプロかどうか誰の目にもわかるから。 あなたのように暇じゃないので。 これから競馬を観戦しなくてはいけないのでもうそろそろここを見るのは終わりにします。
Zuishin

2021/10/17 04:12

いつもの。
fana

2021/10/18 02:16

低評価理由: 質問に対する回答と見えない. (というか,何の話をしているのかすら不明)
K_3578

2021/10/18 02:56

>質問に対する回答と見えない. 回答者のコメント曰く、qqfsdfsafd氏の回答にコメントするつもりが回答として書いてしまったとのこと
guest

0

そのエラーはなにが出してるものでしょうか。
コンパイルエラーなのであれば、実行なぞできないはずですし、エラーが出てるけど実行できるってのは何か他のものが出してるエラーってことになりますが。

投稿2021/10/16 08:04

y_waiwai

総合スコア87800

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

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

tsurugiyaru

2021/10/16 08:32

エラーではなく警告でした、申し訳ありません。
y_waiwai

2021/10/16 08:35

その赤線のエラーというのはなにが出してるんでしょうか。 また、そのメッセージをそのままコピペで提示しましょう
tsurugiyaru

2021/10/16 08:40

VScodeでの、コードに表示される警告です。 メッセージは「関数呼び出しが、、、」「;が、、、」しか書いてありませんでしたので、そのまま提示してあります。
guest

0

ベストアンサー

合ってると思うのですが。。。
#include <stdio.h>

int main(void)
{
double v[3] = {0, 0, 0};
double pi, r;
pi = 3.14159;
r = 2.0;
v[0] = r * r * pi;
v[1] = (double)4 * pi * r * r;
v[2] = (double)4 * pi * r * r * r / 3;

int n = 0; printf("半径2.0の円の面積は%f", v[n]); printf("、球の表面積は%f", v[++n]); printf("、球の体積は%fです。\n", v[++n]); return 0;

}

これで(tsurugiyaruさんのコマンド通りにVSCodeで打ち込んでみた)うまくいったのですが、違いはありますか?
探してみたのですが、私にはわかりませんでした。
開発環境の違いでしょうか。。。?
力になれず申し訳ありません。

投稿2021/10/16 07:54

編集2021/10/16 07:58
tamedy

総合スコア22

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

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

tsurugiyaru

2021/10/16 08:36

ありがとうございます。 一度VScodeを閉じてもう一度開いたら、警告が出なくなっていました。 お手数おかけしたにもかかわらず、このような解決になってしまいすみません、、、
tamedy

2021/10/16 08:51

そういうことがあるんですねえ。 無事解決してよかったです^ ^
fana

2021/10/18 02:24

どう見ても正当なコードなのに赤い破線が出てくることは稀にあります. 無視してビルドすると消えたりしますね.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問