有人能解释一下这段代码在做什么吗?
#include <stdio.h>
void f(const char * str) {
printf("%d\n", str[4]);
}
int main() {
f("\x03""www""\x01""a""\x02""pl");
f("\x03www\x01a\x02pl");
return 0;
}
为什么输出为空?
1
26
C语言中,使用16进制表示的字符(例如"\x01"
)可能会有超过两位的数字。在第一种情况下,"\x01""a"
是字符1,后跟'a'。在第二种情况下,"\x01a"
表示的是0x1a字符,该字符的十进制值为26。
"\x01""a"
或者 "\x01\x61"
。 - Lee Daniel Crocker
1
和26
。 - Eugene Sh.printf("%s", str)
打印字符串。 - ouah