![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
C初心者です。
int型とfloat型で割り算をして処理を表示させてます。
以下、実処理の一部です。
int a;
int b;
a = 3;
b = 2;
(1)printf("答え=%d:1のはず\n",a/b);
(2)printf("答え=%d:1のはず\n",a/(float)b);
(3)printf("答え=%d:1のはず\n",(float)a/b);
(4)printf("答え=%d:1のはず\n",(float)a/(float)b);
私の予想では(1)~(4)まですべて1が表示されると思っていました。
実際は(1)のみ1で(2)~(4)は0でした。
(2)~(4)はなぜ0と表示されるのですか?
・整数型と実数型で演算した場合、実数型に合わせられてること
・表示が整数型であること
なので1が表示されると予想したのですが・・・。
No.4ベストアンサー
- 回答日時:
結論を先に言えば、偶然です(x86系だと、多分、0になる処理系が多いはず)
b=11
とかに変えると・・・
メモリ上で変数がどのように格納されるのかとか、intのビット数や浮動小数点の扱いで結果は変わるはずです
演算は、より大きな桁数を扱える方の型になるので、
(1)はint
(2)-(4)はfloat
になって、printfは、%dから、引数をintとして処理しますが、intにあたる部分の値が偶然0になっていたため、全て0になったはず
デバッガなどでメモリのダンプなどするといいかも
No.2
- 回答日時:
浮動小数型って知っていますか?
整数型の1と浮動小数型の1とはメモリの持ち方が違うのです。浮動小数型float型の場合、32ビットあるうち整数値と指数値とに分けられていて、整数値に1、指数値に10の0乗の0を入れるのです。
提示された式は、intからfloatへ直接整数値指数値関係なく上書きされているのでは?
つまりはキャスト変換がうまくいってないのですね。
思いつくのはそんなところです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# プログラミングのペーパーテスト 実行結果がどのように表示されるか答えよ #include <stdi 1 2022/07/09 14:27
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- C言語・C++・C# プログラミング実行後の表示される値を答えよ #include<stdio.h> void main( 7 2022/05/20 00:07
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# プログラミングのペーパーテスト 実行結果の表示を答えてください #include <stdio.h> 2 2022/07/09 16:14
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語
-
C言語での引数の省略方法
-
「指定されたキャストは有効で...
-
C言語 エラーの原因がわからな...
-
【C++】関数ポインタの使い方
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
if と配列の組み合わせ
-
素数 再帰関数
-
数字列を3桁ごとにカンマで区切...
-
read関数をノンブロッキングで...
-
ラップ関数とはどんなものですか?
-
(int *)の意味
-
C言語で分からないところがあり...
-
実数の整数部,小数部の取得
-
int型とfloat型の演算結果
-
単方向リストに適当な値を入れ...
-
16進数の計算の仕方を教えて下さい
-
「{ } で囲むだけ」は正しい?
-
エラー 添字が付けられた値が、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
c++でテンプレートのコードでわ...
-
(int *)の意味
-
ラップ関数とはどんなものですか?
-
数字列を3桁ごとにカンマで区切...
-
c言語のリダイレクトによる円...
-
比較回数と交換回数表示について
-
実数の整数部,小数部の取得
-
if と配列の組み合わせ
-
構造体の勉強中です 合計点の高...
-
PowerShellがうまくいかない
-
c言語の配列を使ってサイコロを...
-
課題でつまってます・・・
-
C言語のサイコロシミュレート
-
エラー 添字が付けられた値が、...
おすすめ情報