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

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

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

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

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

3回答

597閲覧

コンパイルエラーと警告の内容を知りたい。

hirosann15

総合スコア18

C

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

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2020/07/14 13:55

c

1#include <stdio.h> 2 3 int komikomi( int *a){ 4 int *b=(int)(*a*1.1); 5 if(*b<10000){ 6 7 8 return b; 9 10 }else{ 11 12 13 return 100*(*b / 100) ; 14 } 15 } 16 17 int main(){ 18 int a[5]={120,7200,9280,12580,21940},i; 19 for(i=0;i<5;i+1){ 20 komikomi(&a[5]); 21 printf("%d\n",[5]); 22 } 23 return 0; 24 25 } 26 27

コンパイル結果↓

 clang-7 -pthread -lm -o main main.c main.c:4:11: warning: incompatible integer to pointer conversion initializing 'int *' with an expression of type 'int' [-Wint-conversion] int *b=(int)(*a*1.1); ^ ~~~~~~~~~~~~~ main.c:8:10: warning: incompatible pointer to integer conversion returning 'int *' from a function with result type 'int'; dereference with * [-Wint-conversion] return b; ^ * main.c:21:19: error: expected expression printf("%d\n",[5]); ^ main.c:19:18: warning: expression result unused [-Wunused-value] for(i=0;i<5;i+1){ ~^~ 3 warnings and 1 error generated. compiler exit status 1 

目標とするコンパイル結果↓

132 7920 10200 13700 241300 

税抜きの値段を記入すると税込みの値段を戻してくれる関数komikomiを作り、実際に使いたいと考えました。その際、値渡しではなく、参照渡しで行いたいと考えました。一応自分で組んでみたのはいいのですが、エラーや警告がたくさん出てきてしまいました。自分は初心者のため、エラーや警告の内容がいまいち理解できていません。そのためエラーの内容と警告の内容を日本語で教えていただけるとありがたいです。もしかしたら、エラー警告を直したとしても目標となるコンパイル結果にならない可能性がありますので、できるのならば目標とするコンパイル結果となるように手直ししたコードを付け加えていただくと助かります。

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

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

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

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

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

hirosann15

2020/07/14 14:40

回答しようとしてこのページを開いてくださった皆様、自分の質問内容が大雑把すぎてご迷惑をかけて申し訳ございません。これからはできるだけ皆様にこたえやすい質問(teratailが推奨する質問内容)を意識がけ質問させていただこうと思いました。時間を無駄にしてしまい本当にすみませんでした。
guest

回答3

0

int *b=(int)(*a*1.1);

int のポインタ型の変数にintを代入してます

printf("%d\n",[5]);

第2引数の記述が意味不明です

for(i=0;i<5;i+1){

i+1してますが、その結果はどこにも代入されてません
無意味な文です

投稿2020/07/14 14:27

y_waiwai

総合スコア87719

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

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

0

参照渡しにする理由は何でしょうか?
ソースを見たところ参照渡しである必然性はないようですが。
参照渡しと値渡しで何が変わるのかをまず理解する必要があると思います。

また、ポインターの理解について浅いようなので勉強してください。
printf文及びfor文の構文も間違っているので確認してください。

なおエラー内容は下記のとおりです。

4行目 エラー int *b=(int)(*a*1.1); ^ ~~~~~~~~~~~~~  (int)型を(int *)型に変換できません。  ポインター型にint型を代入しようとしてるため、代入できません。 8行目 エラー return b; ^  (int *)型を(int)型に変換できません。  int型の返り値にポインター型を返すことはできません。 21行目 エラー printf("%d\n",[5]); ^ 式が正しくありません 19行目 警告 for(i=0;i<5;i+1){ ~^~  式の結果が使用されていません。

投稿2020/07/14 14:20

Kaleidoscope

総合スコア257

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

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

0

ベストアンサー

私もC言語は得意とは言えませんが、インデントやスペースなどは軽視しない方がよいと思います。学んでいる本からパターンを見つけて真似しないと(自分でも)読めないコードを書いてしまうでしょう。

c

1#include <stdio.h> 2 3int komikomi(int *a) { 4 double b = *a * 1.1; 5 6 if (b < 10000) { 7 return b; 8 } else { 9 return 100 * b / 100; 10 } 11} 12 13int main() { 14 int a[5] = { 120, 7200, 9280, 12580, 21940 }; 15 16 for (int i = 0; i < 5; i++) { 17 int k = komikomi(&a[i]); 18 printf("%d\n", k); 19 } 20 21 return 0; 22}

投稿2020/07/14 14:11

編集2020/07/14 14:24
bboydaisuke

総合スコア5270

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

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

bboydaisuke

2020/07/14 14:21

質問者の年齢などは知りませんが、英語だからエラーメッセージが理解できないというならば日本語でメッセージを出してくれる開発環境を使いましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問