

Cでプログラミングの勉強をしています。
double型で宣言した変数をprintfで出力するとき、代入した数値は小数点以下1桁なのに、なぜか出力結果では6桁になると問題集に書かれていました。解説はありません。
プログラムは下のものですが、なぜかお分かりになる方、教えていただけませんか?
#include<stdio.h>
struct test{
int x;
double y;
}
void print(struct test a);
void set_value(struct test a);
void main(void){
struct test a ={1, 2.0};
set_value(a);
print(a);
}
void print(struct test a){
printf("a.x = &d, a.y= %f\n", a.x, a.y);
}
void set_value(struct test a){
a.x =10;
a.y =20.0;
}
No.2ベストアンサー
- 回答日時:
単に桁数を指定していないからです。
何も指定しない場合、 printf は小数点以下を
6桁表示するようになっています。
そもそも、double は浮動小数点数なので
保持する桁数は予め決まっています。
後ついでに細かいミスをなどを、、、
[1] 最後のセミコロンを忘れています。
struct test {省略};
[2] &d ではなく %d です。
printf("a.x = %d, a.y= %f\n", a.x, a.y);
[3] \n ではなく \n です。
printf("a.x = %d, a.y= %f\n", a.x, a.y);
[4] set_value はポインタ渡しで。
int main() {
set_value(&a);
}
void set_value(struct test *a) {
a->x = 10;
a->y = 20.0;
}
ありがとうございます!
セミコロンを忘れたり、演算子?(%d)を間違えたり、はたまたポインタ渡しをミスしたりと前途多難ですが、がんばっていきます。
No.3
- 回答日時:
小数点以下の桁数ではなく
有効数字の桁数であれば
議論の対象になると思います。
ありがとうございます。
議論がしたかったのではなくて、単純に私に知識がなくて、問題集に解説がなくて、身近に誰もC言語を知っている人がいなかったので質問しました。
気分を害されていたらごめんなさい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
静的でないメンバ関数の呼び出...
-
C++にてtemplateで受け取った任...
-
既定のコンストラクタがありま...
-
C++でイベントドリブンなコード...
-
critical error c0000005
-
_beginthreadにて発生するコン...
-
void*型の配列について
-
メンバー関数ポインタ
-
ifstreamについて
-
(void)0 はどんな意味ですか
-
H8マイコンのシリアル通信につ...
-
C#でトーンカーブの作成
-
Delphiの定数とローカル変数の...
-
string型とsbyte*型の変換
-
C# KeyDownイベントでショート...
-
クラス内で、親ではない他のク...
-
【gcc・cygwin】multiple defin...
-
TimerProc コールバック関数を...
-
戻り値を返す関数の前に(void)...
-
static constメンバ変数(配列)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【gcc・cygwin】multiple defin...
-
多重定義が起きている?--lnk20...
-
const_castのつかいどころを教...
-
C++にてtemplateで受け取った任...
-
既定のコンストラクタがありま...
-
戻り値を返す関数の前に(void)...
-
静的でないメンバ関数の呼び出...
-
int main()、void main()、void...
-
C# KeyDownイベントでショート...
-
C# Controls.Addで動的に配置し...
-
(void)0 はどんな意味ですか
-
gcc: incompatible pointer type
-
_beginthreadにて発生するコン...
-
C#でラジオボタンを設定に記録...
-
C#でテンキーの操作は可能でし...
-
C++別のオブジェクトからメンバ...
-
CTabCtrl:TABインデックス単位...
-
見た目は同じソースなのにエラ...
-
pictureboxの画像を削除するには?
-
【VC++6.0】イベントハンドラ関...
おすすめ情報