2016-04-26 13 views
0

こんにちは仲間プログラマ、半分のビットに(0-9) を十進数に変換するために私の大学からタスクを持っニブル半分桁コンバータ

I`ve

私がお聞きしたいかもしれません、 (つまり0101 =ニブル。)の制限は、文

がここに私の問題は、私はCAということですので、私は少しを試してみましたが、これまで

int main() 
{ 
    int n; 

    printf("type in your digit"); 
    scanf("%d", &n); 
    printf("%n%n%n%n", (n/8)%2, (n/4)%2, (n/2)%2, n%2); 

    return 0; 
} 

を来たら私たちが使用できないことです私はそうする場合、プログラムは

イムは本当にあなたが私にそれが またはいくつかの良いアドバイスどのように働くことができる方法のいくつかの例を与えることができます苦労して続行するか、またはそれが

を動作させる方法を知らないクラッシュした桁に入れNTそれを機能させる。

は、私は本当にそれ

は、任意の助けのために本当にありがとうと答えていただければ幸いです!

+2

'%のN 'は、あなたはそれがないと思う何をしません。 'printf'のドキュメントを読んでください。 – user3386109

+0

を使用してアスキー文字をニブルに変換する: 'char nibble = digit - '0'; 'nibble'の結果値は0x00から0x09の範囲になります。 printf( "%i%i%i"、(ニブル>> 3)&1)+ "0"、(ニブル>> 2)&1)+ "0"、(ニブル>> 1)&1)+ '0'、(ニブル&1)+ '0'); – user3629249

答えて

0

printfに間違った書式指定子を使用しています。

%nフォーマット指定子は、int *を想定し、これまでに書き込まれた文字数を所定のメモリアドレスに書き込みます。 int *を期待する引数にintを渡すので、printfは、その番号をメモリアドレスとして解釈し、そのアドレスに書き込もうとします。これは未定義の動作であり、おそらくコアダンプが発生します。

あなたが代わりに%dを使用したいが、int出力に使用されます。

printf("%d%d%d%d", (n/8)%2, (n/4)%2, (n/2)%2, n%2); 
関連する問題