C的反向数字打印和数组



我的一个朋友用C编写了这个程序:

#include <stdio.h>
#include <stdlib.h>
int main(void) {
int number;

if (scanf("%d", &number) != 1) {
printf("ERROR: While reading the 'int' value an error occurred!");
return EXIT_FAILURE;
}

if (number == 0){                       //if number is 0 then nothing to do!
printf("%d", number); 
}
else{
char reverse[11];                   //created a char array of len 11

int ind=0;                          //created int ind for array iteration!

while(number)                       // while loop with the number
{
int digit = number % 10;        //calculate the digit that that will be in the first place in the char array

我想知道这行代码的作用:

reverse[ind++] = digit + '0';   //add digit to array at ind position

我知道它将预先创建的数组中的数字设置为"ind"然后加1 +1;但我不知道+ '0'是什么。

number = number / 10;           //cut the number so that we get the new number
}

reverse[ind]='';
printf("%sn",reverse);
}
return EXIT_SUCCESS;
}

char也只是数字。
根据所使用的字符集,每个数字被分配给一个特定的字符。

你可以看一下ASCII码表,看看哪个数字对应哪个字符。

0-9A-Za-z依次排列,这对数字的映射非常有用。

所以0-9将是:

tbody> <<tr>1245678
字符 数值
048
49
50
351
52
53
54
55
56
957
  • reverse是字符数组(char[11])
  • 所有标准C函数都使用ASCII表将数字表示为字符(每个字符都有自己的编号),对于字符'0''1''2''3''4''5''6''7''8''9'取值分别是:48、49、50、51、52…
  • 因此如果您添加48 + 1('0' + 1)你得到49,其中对应'1'一般来说,对于小数'0' + n = '<n>'.
  • 对于十六进制数字,您可以使用:char digit = "0123456789ABCDEF"[n]

相关内容

  • 没有找到相关文章

最新更新