

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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CTabCtrl:TABインデックス単位...
-
多重定義が起きている?--lnk20...
-
typedef unsigned int UINT;が...
-
戻り値を返す関数の前に(void)...
-
【gcc・cygwin】multiple defin...
-
別ソースファイル、同クラス名...
-
C++にてtemplateで受け取った任...
-
_beginthread()の使用について
-
(void)0 はどんな意味ですか
-
構造体を宣言と共に初期化する方法
-
const_castのつかいどころを教...
-
void*型の配列について
-
静的でないメンバ関数の呼び出...
-
gcc: incompatible pointer type
-
GDI+の使用方法について
-
別のファイルの値を得るには?
-
最早開始時間と最遅完了時刻を...
-
20'(角度)の計算がわかりま...
-
信頼区間の1.96や1.65ってどこ...
-
Aの値からBの値を除するとは??
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
静的でないメンバ関数の呼び出...
-
既定のコンストラクタがありま...
-
戻り値を返す関数の前に(void)...
-
C++にてtemplateで受け取った任...
-
【gcc・cygwin】multiple defin...
-
const_castのつかいどころを教...
-
多重定義が起きている?--lnk20...
-
gcc: incompatible pointer type
-
(void)0 はどんな意味ですか
-
C# KeyDownイベントでショート...
-
pictureboxの画像を削除するには?
-
Notepad++の関数リスト表示の変...
-
C#でテンキーの操作は可能でし...
-
アドレスを指定して関数を呼び...
-
ウインドウの移動禁止
-
画面上をクリックするとクリッ...
-
C# Controls.Addで動的に配置し...
-
別ソースファイル、同クラス名...
-
DLLの関数呼び出しで引数がある...
-
プログラム作成教えてください...
おすすめ情報