所以我正在学习嵌入式系统类(class),我们正在使用 C 语言。 现在是第 2 周,所以我们只是刷新我们的 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);
}
谢谢!
最佳答案
那是因为:
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
关于C - strlen ("288_882_288"+strlen ("288_882_288")/2 = 6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41885550/