gpt4 book ai didi

c++ - 很难理解这个 while 循环

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

我在理解这个 while 循环时遇到了一些麻烦,它的结果是“TT”,但是对我来说,如果它打印出“TP”是什么意思。谁能帮我吗?我将展示为什么我认为它应该打印“TP”,并且需要解释为什么它打印“TT”(这是正确的)。

#include <iostream>
using namespace std;
char txt[] = "ETERNITTPLATENE-OG-TAKPAPPEN-BLE-KASTET";

void funk(char* t1, char* t2, int n)
{
while (t1 < t2) { ++t1; t2 -= n; } cout << *t1 << *t2;
}

int main() {
funk(txt, txt + 27, 3); cout << '\n';
return 0;
}

所以它第一次运行 func(E, N, 3) 所以我们得到 E < N这是真的,因此它使 E 到 T 和 N 到 P(因为 27-3 是 24,并且在该数组中 P 是第 24 个)。

然后我们得到 T < P ,这是错误的,因此它应该停止 while 循环并显示 TP ,它没有。我在想什么?

最佳答案

当你在做 t1 < t2你不是在比较(*t1) < (*t2)这意味着比较 'T' < 'P' .

相反,它正在比较内存地址中字符 'T' 的值。和 'P'被存储。在这种情况下,'T'存储在 'P' 之前.

我已经包含了指针在整个循环中的移动方式。这应该阐明 while 的整个迭代循环。

E  T  E  R  N  I  T  T  P  L  A  T  E  N  E  -  O  G  -  T  A  K  P  A  P  P  E  N
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
^ ^
t1 t2

E T E R N I T T P L A T E N E - O G - T A K P A P P E N
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
^ ^
t1 t2

E T E R N I T T P L A T E N E - O G - T A K P A P P E N
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
^ ^
t1 t2

E T E R N I T T P L A T E N E - O G - T A K P A P P E N
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
^ ^
t1 t2

E T E R N I T T P L A T E N E - O G - T A K P A P P E N
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
^ ^
t1 t2

E T E R N I T T P L A T E N E - O G - T A K P A P P E N
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
^ ^
t1 t2

E T E R N I T T P L A T E N E - O G - T A K P A P P E N
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
^ ^
t1 t2

E T E R N I T T P L A T E N E - O G - T A K P A P P E N
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
^ ^
t2 t1

关于c++ - 很难理解这个 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50567952/

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