C语言,一道数组求解惑

img


在这个程序里,'0'的值是0还是ASCII码里的48,为什么,求解

你的代码的含义是把x转换成char,16进制
所以a[] 里面存放的是 '0'-'9'或者 'A'-'Z',而不是0-9
你的代码其实不用switch那么复杂
直接
a[i] = x % 16 > 9 ? x % 16 - 10 + 'A' : x % 16 + '0';
即可

main,不是nain
'0'是ASCII值48
'\0'是ASCII值0