带参数的变量名

时间:2016-03-18 08:46:39

标签: c

所以我在这里有一些我一直在研究的代码。它将十进制数转换为二进制数。代码运行顺利,但是烦恼的是变量。代码如下:

#include <stdio.h>
int main()
{
    long int decimalNumber, remainder, quotient;
    int binaryNumber[100], i=1, j;

    printf("Enter any decimal number: ");
    scanf("%ld",&decimalNumber);

    quotient = decimalNumber;
    while (quotient!=0) {
        binaryNumber[i++]= quotient % 2;
        quotient = quotient / 2;
    }
    printf("Equivalent binary value of decimal number %d:       ", decimalNumber);

    for (j = i -1 ; j> 0;  j--)
        printf("%d",binaryNumber[j]);

    return 0;
}

我真的觉得变量令人困惑。有人能告诉我变量实际发生了什么吗?特别是binaryNumber[100]binaryNumber[i++]binaryNumber[j]binaryNumber[i++] = quotient % 2

这一个的{{1}}

4 个答案:

答案 0 :(得分:0)

binaryNumberints的数组,即整数。它的大小为100.它从0到99(binaryNumber[0]是第一个元素而binaryNumber[99]是最后一个元素)。该数组可以包含100个不同或相等值的整数。它们实际上不必具有0 ... 99的值,但是int范围内的任何其他内容(阅读评论)。
执行int binaryNumber[100]时,您可以定义此数组 执行binaryNumber[i++]时,您将访问此数组位置i中的元素,然后递增i。这意味着你执行i = i + 1; 同样适用于binaryNumber[j] 当您binaryNumber[i++] = quotient % 2执行quotient % 2时,binaryNumber的值{/ 1}}分配给位置i的{​​{1}}数组,如前所述(并增加i })。

如果您想知道模数运算符(%),请阅读here

答案 1 :(得分:0)

binaryNumber[100] :这实际上是array of 100 integersinteger可以访问array中的第一个binaryNumber[0]

binaryNumber[j] :这意味着数组中的(j-1)th整数。

binaryNumber[i++] :当此语句运行时,可以说i=3binaryNumber[i++]相当于binaryNumber[3],这是第4个整数。但是,执行此语句后,i会增加到4

<强> quotient % 2 :  %实际上是模数运算符。示例:13 % 4 = remainder of 13/4 = 1

答案 2 :(得分:0)

binaryNumber [100]:它是一个数组,类型为&#34; long int&#34;的元素的序列。您可以使用&#34; array [index] = value&#34;访问特定元素。

binaryNumber [i ++]:访问元素nember然后递增i,例如如果i = 1则接入binaryNumber [1]然后我变为2(使用后)。

binaryNumber [j]:访问元素nember j,j是一个变量,可以用作索引,然后你将访问元素nember当前的j值。

binaryNumber [i ++] = quotient%2:它告诉编译器让binaryNumber中的元素nember i取值为商数%2的值,即9%2 = 1; 5%3 = 2,剩余的商梨2

评论更多信息。

答案 3 :(得分:0)

进行转换的一种简单方法是循环和移位。你可以把它放在一个函数中,使转换看起来不错。这是一个例子:

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>   /* for CHAR_BIT */

void binprn (const unsigned long v);

int main (int argc, char **argv) {

    long unsigned a = argc > 1 ? strtoul (argv[1], NULL, 10) : 4327;

    printf ("\n %lu decimal,  binary: ", a);
    binprn (a);
    putchar ('\n');

    return 0;
}

/** unpadded binary representation of 'v'. */
void binprn (const unsigned long v)
{
    if (!v)  { putchar ('0'); return; };

    size_t sz = sizeof v * CHAR_BIT;
    unsigned long rem = 0;

    while (sz--)
        if ((rem = v >> sz))
            putchar ((rem & 1) ? '1' : '0');
}

使用/输出

$ ./bin/dec2bin

 4327 decimal,  binary: 1000011100111

$ ./bin/dec2bin 10

 10 decimal,  binary: 1010

$ ./bin/dec2bin 127

 127 decimal,  binary: 1111111