繁体   English   中英

我不明白 C++ 中的 ++ 运算符

[英]I don't understand ++ operators in c++

在此处输入图片说明

当我编译这个时,我得到

j is: 28  k is: 50
V H 

我不明白的是,为什么j++k++ 28 和 50 而不是 27 和 48? 我不明白为什么它增加了 3+,而不是 1+。

条件(txt[j] == txt[k])对于 3 个值“-”、“I”和“-”为真。 所以你在 25 上加 3,在 47 上加 3。之前/之后的增量只是在它发生的那一行上不同。

如果你有:

int x = 10;
int y = 10;
cout << x++;
cout << ++y;

您会看到 x 的值在打印时为 10,而 y 的值为 11。

如果您然后再次打印它们而没有第二次更改它们,它们都应该是 11。

============================

使用您的值,它的工作方式如下:

Txt [25] 是字符串中的字母“-”。 就像第 4 个“-”。Text[47] 也是字母“-”,就像字符串中的第 8 个“-”。 循环的条件是继续在这两个索引上运行增量运算符,同时它们的值相同。 所以它们是相同的,两者都会增加。 现在我们看看字母 26 和 48。它们都是“I”,这又是一样的。 所以我们第三次递增,27和49都是'-',所以我们再次递增。 现在 28 位于“V”(“VAAR”的开头),而 50 位于“H”,即“HOST”的开头。 'H' 不等于 'V' 所以我们在这里停止循环。

您从"-IV""-IH"开始比较。 所以有三个匹配的字符。

Preincrement ++k和 postincrement j++都增加变量。 它们作为右侧参数的行为方式的不同,例如int z = ++k; vs int z = k++; . 前者增加k并将其新值分配给z 后者将k的当前值赋给z然后递增k

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM