C拼图;乘以 Char

xxy*_*yzz 1 c arithmetic-expressions char

最近我的 C 教授给了我们以下难题:

char c1, c2, c3;

c1 = 'a';
c2 = 'e';
c3 = c1 * c2;
printf("%c",c3);
Run Code Online (Sandbox Code Playgroud)

答案:E

然而,除了已经记住产品之外,我有点困惑如何直观地解决这个问题。根据我的研究,字符“a”和“b”的 int 值分别为 97 和 101,“E”为 69,这就是我很难理解该结果是如何实现的。

ikh*_*ikh 5

首先,97 * 1019797。(以十六进制表示,0x2645)。

并且char是1字节。就这样0x2645变成了0x45

0x45 == 69 == 'E'。就是这样。