1

摂氏 int tC の温度があり、整数配列 arr[5] の各ビットを使用して、それをバイナリ形式に変換したいとします。剰余があるかどうかを確認するために、剰余を 2 つの方法で使用しようとしました。この関数を使ってみましたが、理論上はうまくいくのに、いつもめちゃくちゃに思えます。どんな助けでも大歓迎です。また、ポインターを使用することもできますが、この特定のケースでポインターを使用する方法がよくわかりません。

int main(void)
{
    int arr[5];
    int tC = 39;
    int i;

    for(i=0; i<5; i++)
    {
        if(tC%2==0)
            arr[i] = 0;
        else
            arr[i] = 1;
        tC/=2;
    }
    printf("\n%d\n", arr[5]);
}
4

1 に答える 1

4

ちょっとした変更が必要です:

#include<stdio.h>
int main(void)
{
    int arr[5];
    int tC = 39;
    int i;

    for(i=4; i>=0; i--)
    {
        if(tC%2==0)
            arr[i] = 0;
        else
            arr[i] = 1;
        tC/=2;
    }
    for(i=0; i<5; i++)
        printf("%d", arr[i]);
}

バイナリ値を配列に格納し、0-4 (<5) からループしているため、値は逆の順序で保存されます。4-0 (0 を含む) からループするだけです。また、最後のインデックスが 4であるため、printfに格納されている個々のビット値を出力していました。また、配列内のすべてのビット値を出力するためにループしていませんでした。arr[5]UB

于 2013-11-03T12:36:32.313 に答える