独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
パクパク

独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

#1

投稿記事 by パクパク » 12年前

[1] 質問文
 [1.1] 自分が今行いたい事は何か

質問が二つあります。ご教授お願い致します。
(1)独習Cの5章、前章の理解度チェック(データ型、変数、式の詳細)にて、Cコンパイラは次の数値にどのようなデータ型を割り当てるか、という問題があるのですが、その中のC番(数値: 123.45)がわかりません。私はfloat型と答えたのですが、正答はdouble型でした。どちらでも表示出来たので、最小の型を割り当てると思ったのですが、認識が間違っているでしょうか?どうして、また、どのようにdouble型に割り当てられるのか、返信お願い致します。

(2)上記と同じ前章の理解度チェックにて、「ループ制御変数をdouble型にキャストしたものを、sqrt()関数の引数として使用する、1~10までの平方根を表示するプログラム」という問題があるのですが、下記の[1.2] ではなく、

コード:

for(num = 1; num <= 10; num++)
		printf("%d の平方根は %lf です。\n", num,(double)sqrt(num);//
と書いたところ、同様の結果が得られました。その違いは何かをお教えください。


 [1.2] どのように取り組んだか(プログラムコードがある場合記載)

コード:

#include <stdio.h>
#include <math.h>

int main(void)
{
	int num;

	printf("1~10までの平方根を表示するプログラム\n");

	for(num = 1; num <= 10; num++)
		printf("%d の平方根は %lf です。\n", num,sqrt((double) num) );
	
	return 0;
}

[2] 環境  
 [2.1] OS : Windows
 [2.2] コンパイラ名 : VC++ 2010 Express

[3] その他
 ・Cが始めて勉強する言語です。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

#2

投稿記事 by softya(ソフト屋) » 12年前

(1)123.45と書かれていたのなら定数でdouble型ですが、123.45fと書かれていたのなら定数でfloat型です。
そういう定数の違いも考慮しろということでは?

(2)sqrtの戻り値はdoubleなのでキャストの必要はありません。
逆にsqrtの引数はdoubleなのでnumが暗黙の型変換でdoubleに変換されています。
キャストを省略しているのでコンパイラによってはワーニングが出ると思います。
VC++ 2010 Expressって出てませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

パクパク

Re: 独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

#3

投稿記事 by パクパク » 12年前

返信ありがとうございます。

(1)「定数の使い方」という項目を見直してみると、”浮動小数点数はデフォルトでdoubleと見なされます”という記述がありました。申し訳ありません。


(2)にて、オーバーロードされた関数sqrt()の複数のインスタンスが引数リストと一致します、と表示されました。
正直、オーバーロード(多重定義?)もインスタンス(実体?)もよくわかりませんでした。

しかしながら、キャストを書いた場合警告が消えたので、上記は型キャストの事を指しているのでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

#4

投稿記事 by softya(ソフト屋) » 12年前

パクパク さんが書きました:(2)にて、オーバーロードされた関数sqrt()の複数のインスタンスが引数リストと一致します、と表示されました。
正直、オーバーロード(多重定義?)もインスタンス(実体?)もよくわかりませんでした。
それは、コンパイラがC++として動作しています。
ソースファイルの拡張子を.cにしてください。そうすればC言語としてコンパイルされるのでエラーメッセージが変わります。
→ 新規追加でmain.cファイルを作り内容をコピペして、今のmain.cppを削除します。
あるいはコンパイラオプションを変更する方法もあるのですが、そちらはcppファイルでcコンパイルすことになるので間違いやすくオススメできません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

パクパク

Re: 独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

#5

投稿記事 by パクパク » 12年前

http://uploda.cc/img/img50de6bfc9b716.png

拡張子をcにしているはずなんですが、C++ファイルになっているのでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

#6

投稿記事 by softya(ソフト屋) » 12年前

画像は鍵がかかってて見れませんが、コンパイルエラーは間違いなくC++のものです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。


アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

#8

投稿記事 by softya(ソフト屋) » 12年前

VC++2010はC++がデフォルトなのかも知れませんね。
プロパティのC/C++の詳細設定で、言語としてC言語を選択してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

パクパク
記事: 23
登録日時: 12年前

Re: 独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

#9

投稿記事 by パクパク » 12年前

http://uploda.cc/img/img50de6bfc9b716.png

鍵は上記と同じです。
問題無い(エラーは出ていますが)……のでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

#10

投稿記事 by softya(ソフト屋) » 12年前

プロパティの方を見せてください。
問題がないかと言われたらワーニングは致命的なバグの原因になることがありますが、無闇にキャストするのもバグの原因になります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

パクパク
記事: 23
登録日時: 12年前

Re: 独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

#11

投稿記事 by パクパク » 12年前

http://dixq.net/forum/gallery/image.php ... age_id=542

わたくしのアルバムに画像をアップロードしてみたので、宜しければご覧下さい。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

#12

投稿記事 by softya(ソフト屋) » 12年前

うまくアップロードされていないようです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

パクパク
記事: 23
登録日時: 12年前

Re: 独習C、5章の前章の理解度チェックの2のCについて(その他、質問一件)

#13

投稿記事 by パクパク » 12年前

返信ありがとうございます。

(1)(2)共に疑問点に答えて頂きましたし、エラーも出ていないので、解決!にさせて頂こうと思います。

アップロードした画像は他の端末から確認してみます。

お教え頂きありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る