Nat*_*ate 1 c arrays string pointers strlen
所以我正在学习嵌入式系统课程,我们正在使用C.第二周,所以我们只是刷新了我们的C代码内存.
这段代码是如何打印6号的?幕后发生了什么?
int main (void) {
char msg[] = "288_882_288";
int my_length = 0xFFFFFFFF;
my_length = strlen(msg+strlen(msg) /2);
printf("%d",my_length);//prints 6
fflush(stdout);
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
那是因为:
strlen(msg) = strlen("288_882_288") = 11
strlen(msg) / 2 = 5 (floor value taken)
msg + strlen(msg) / 2 is the same as msg + 5 == &msg[5]
strlen(msg+strlen(msg) /2) = strlen(&msg[5]) = strlen("82_288") = 6
Run Code Online (Sandbox Code Playgroud)