首页 > 解决方案 > 在 char 赋值表达式中使用反斜杠字符 (\)

问题描述

char C = '\1'
int I = -3
printf("%d", I * C);

输出:

-3

嗨,我刚刚在我的练习书中看到了这种奇怪的语法,但它并没有详细说明它是什么以及它的用法。1为什么引号旁边有反斜杠?有'\1'什么不同'1'吗?如果是这样,为什么结果I * C与 1 * 3 相同?谢谢

标签: ccharescapingoctal

解决方案


'1'是字符“1” 。现在大多数平台都使用ASCII将字符转换为字节——'1'在 ASCII 中是49十进制或0x31十六进制的整数。

cppreference 转义序列

\nnn  arbitrary octal value   byte nnn

八进制转义序列有 3 个八进制数字的限制,但如果更早遇到,则在第一个不是有效八进制数字的字符处终止。

是十六进制或十进制整数'\1'。在 ASCII 中,它是一个字符——标题的开始。0x11SOH

这:

char C = '\1';

相当于:

char C = 1;

推荐阅读