2025年02月27日 C语言 为什么加上符号 0 之后数字4变成了符号 4 极客笔记
我写了一个程序,打印传入的数字作为参数。代码能正常工作,但是我不理解将数字转换为字符的过程。在机器层面上,这个过程是如何工作的?为什么当我加上零符号时,从数字4得到的是符号四?
#include <stdio.h>
void    ft_putchar(char c)
{
    write(1, &c, 1);
}
void    ft_putnbr(int nb)
{
    if (nb >= 10)
    {
        ft_putnbr(nb / 10);
        ft_putnbr(nb % 10);
    }
    else
    {
        ft_putchar(nb + '0');
    }
}
int main()
{
    ft_putnbr(42);
    return 0;
}
我不理解在这种情况下将数字转化为符号的过程。
'0'只是整数48的可读表示,它被认为是ASCII字符'0'的代号。
ASCII数字代码:
| decimal | octal | hex | binary | character | 
|---|---|---|---|---|
| 48 | 060 | 30 | 0110000 | 0 | 
| 49 | 061 | 31 | 0110001 | 1 | 
| 50 | 062 | 32 | 0110010 | 2 | 
| 51 | 063 | 33 | 0110011 | 3 | 
| 52 | 064 | 34 | 0110100 | 4 | 
| 53 | 065 | 35 | 0110101 | 5 | 
| 54 | 066 | 36 | 0110110 | 6 | 
| 55 | 067 | 37 | 0110111 | 7 | 
| 56 | 070 | 38 | 0111000 | 8 | 
| 57 | 071 | 39 | 0111001 | 9 | 
当你把4加上48,这表示整数'0',你会得到52。
当你将它写入屏幕时,它的字符代表的代码会被显示出来(在这种情况下是'4')。
同时,C标准保证数字字符的代码是连续的,并按照自然的方式排序(即'0'的值最小,'9'的值最大)。
本文链接:http://so.lmcjl.com/news/23942/