按照这个问题的逻辑,下面的代码应该工作:
#include <stdio.h>
int main(){
printf("%c", '\0101');
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,它会出现以下错误:
main.c: In function 'main':
main.c:5:18: warning: multi-character character constant [-Wmultichar]
printf("%c", '\0101');
^~~~~~~
exit status -1
Run Code Online (Sandbox Code Playgroud)
我不确定为什么它是一个多字符常量.我相信在这些单引号内只应该有一个字符常量(octal 101= decimal 65= 'A').为什么有多个字符?为什么八进制表示法不起作用?
八进制char表示法应该是这样的形式\abc,其中a,b,和c,是八进制数字(即在的包容范围0到7).
你有四位数,所以编译器会把它解释为\010(最大munch),然后是1.
这是一个多角色常数,就像'12'.就像\abc,它有一个int类型,但值是实现定义的,转换为cin printf将具有实现定义的行为.您有用的编译器会提醒您,并且毫不奇怪,使用正确的术语.
你的意思是写'\101'吗?如果你这样做了,你真正想要的是大写字母A,那么就写下'A'便携式C.
应该'\101'不是'\0101'.您可以使用'\x41'(十六进制)或'\101'(八进制)代替'A'.但两者都降低了代码的可移植性和可读性.当没有更好的方法来表示字符时,您应该只考虑使用转义序列.