[英]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.