-4

わかりましたので、これは私がしなければならないことですが、それを機能させることはできません:

a) 整数の代わりに float に変更します。そして、「u」に開始値として 0.3 を割り当てます。

b) 整数の代わりに倍精度を使用します。「u」の開始値として 0.3x10^45 を割り当てます。

c) 整数の代わりに文字を使用します。「u」の開始値を「C」として割り当てます。

#include <stdio.h>
main ()
{
int u = 3;
int v;
int *pu;
int *pv;
pu = &u;
v = *pu;
pv = &v;

printf("\nu=%d     &u=%X    pu=%X  *pu=%d", u, &u, pu, *pu);
printf("\n\nv=%d    &v=%X    pv=%X  *pv=%d", v, &v, pv, *pv);
}

誰かが私のコードを変更して上記のことを行うことができれば、本当に感謝しています。ありがとう

4

1 に答える 1

0

この質問はいくつかのことをテストしています。まず、自分のタイプを知っていますか?浮動小数点数は でfloat、倍精度数はdoubleで、文字は で宣言されることを知っておく必要がありcharます。

次に、これらの異なる型にリテラル値を割り当てる方法を知っている必要があります。float リテラルの場合、おそらく を使用することが期待されます0.3f。これは、その接尾辞がないと、デフォルトで倍精度になるためです (ただし、このコンテキストでは違いはありません)。double の場合、科学表記法の使用方法を知っていることが期待されます (リテラル値は である必要があります0.3e45)。私が望む文字リテラルは、あなたにとってかなり明白です。

printf最後に、フォーマット仕様で使用されるさまざまなタイプの文字を知っていることが期待されます。単精度と倍精度の数値はどちらも同じタイプの文字を使用しますが、要件に応じて%e%fまたはを選択できます。%g私は一般的な目的の良い選択として使用する傾向があります%gが、私の推測では%e、ダブル (科学的表記法の使用を強制するため) と、おそらく%f浮動小数点数に使用することを期待していると思います。これは、教えられたことに依存します。あなたが使用するキャラクターのために%c

%dまた、フォーマット文字列のタイプ文字のみを置き換える必要があることに注意してください。%X値は、ポインター (&uおよび)の16 進表現を出力するために使用されますpu。ポインタは、ポイントされている型が変更されたという理由だけで浮動小数点値または文字に変更されることはありません.アドレスは、書き出すときは常に整数です.

于 2013-07-12T09:44:57.323 に答える