gpt4 book ai didi

C - strlen ("288_882_288"+strlen ("288_882_288")/2 = 6?

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:51 26 4
gpt4 key购买 nike

所以我正在学习嵌入式系统类(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com