我的一个朋友用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-9
、A-Z
和a-z
依次排列,这对数字的映射非常有用。
所以0-9将是:
字符 | 数值 | 0 | 48 | 1
---|---|
49 | |
50 | |
3 | 51 |
52 | |
53 | |
54 | |
55 | |
56 | |
9 | 57 |
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]