0

我的任务是打印十进制数的二进制值,并且我想控制数组的大小,因为我知道我应该这样做,这样我的程序就可以在所有编译器中工作。

我不太了解运算符 sizeof,但如果你能解释我应该在哪里以及为什么将 sizeof 放在我的程序中,我会很高兴:

void translate_dec_bin(char s[]){
    unsigned int decNum;
    char st[MAX_LEN] = { 0 };
    int j = 0;
    sizeof(decNum, 4);
    decNum = atoi(s);

    while (decNum > 0){
        st[j] = decNum % 2;
        decNum = decNum / 2;
        j++;
    }

    while (j >=0){
        printf("%d", st[j]);
        j--;
    }
    printf("\n");

}

我的想法是,当我打印数字时,即在代码中:

printf("%d", st[j]);

我应该把运营商。这样对吗?

4

2 回答 2

1

sizeof是一元运算,这意味着它只需要一个操作数或参数。

于 2013-11-10T17:00:51.777 回答
1

http://en.wikipedia.org/wiki/Sizeof

Sizeof 用于测量 C(和 C++)中数据类型的字节长度。所以,如果我要写

size_t a = sizeof(int);

a 通常等于 4(参见 Jonathan Leffler 的评论)。这是因为 32 位整数需要 4 个字节的内存(32 位/一个字节中的 8 位 = 4)。

回答有关可移植性的问题, sizeof(int) 应该适用于任何编译器。

您可能会发现这个问题很有用: C "int" 的大小是 2 字节还是 4 字节?

要将 char 数组的大小设置为 int 的位大小,应该可以:

const size_t intsize = sizeof(int) * 8;//sizeof returns size in bytes, so * 8 will give size in bits
char st[intsize] = { 0 };
于 2013-11-10T17:04:15.340 回答