提问人:Zeptuz 提问时间:12/10/2022 最后编辑:Zeptuz 更新时间:12/10/2022 访问量:58
增量在此方案中如何工作 C++ [已关闭]
How does increment work in this scenario C++ [closed]
问:
我没有写这个代码。 我在 C++ 编码的第三天,我很难理解 Incremnent 的一般工作原理。
int main()
{
int antal_ord {};
double medellangd {};
string kort_ord;
string langt_ord;
int min_length {100};
int max_length {};
string S;
cout << "Mata in en text:\n" << endl;
while (cin >> S)
{
if (S.length() > max_length)
{
max_length = S.length();
langt_ord = S;
}
if (S.length() < min_length)
{
min_length = S.length();
kort_ord = S;
}
medellangd+=S.length();
antal_ord++;
}
if (antal_ord == 0)
{
cout << "Inga ord matades in." << endl;
}
else {
medellangd = (medellangd / antal_ord);
round(medellangd);
cout << "Texten innehöll " << antal_ord << " ord." << endl;
cout << "Det kortaste ordet var " << '"' << kort_ord << '"' << " med "
<< kort_ord.length() << " tecken." << endl;
cout << "Det längsta ordet var " << '"' << langt_ord << '"' << " med "
<< langt_ord.length() << " tecken." << endl;
cout << "Medelordlängden var "<< fixed << setprecision(1) << medellangd << " tecken.";
}
return 0;
}
antal_ord 是在此方案中写入的字数的变量。 在上面写着“cout << ”Texten innehöll “<< antal_ord << ”ord.“ << endl”的那一行中,它怎么知道写了多少个字?只有在这一行之前使用这个变量的时候是当变量递增时,但这如何让变量知道总共写了多少个单词呢? 还有 .length 命令,它基本上只计算写的字母数量吗?
答:
这里真的没有什么特别的事情发生。每读一个单词,你就会递增一个。由于您开始时写的单词为零,并且 ,在末尾将等于从 中读取的单词数。cin >> S
antal_ord
antal_ord==0
antal_ord
cin
同样,返回当前在 中的字母数。就您而言,这正是您阅读后没有机会阅读的字母数量。但如果你这样做了,那么当然会改变。S.length()
S
cin
S
S += " some extra letters
S.length()
评论
当您了解大多数编程语言时,您将从基础知识开始:语法、数据类型、声明(var + funcs 以及其他可能的概念)、循环、调用、数学运算以及与每种编程语言相关的其他代码控制技术。
你会看到最多的(我将尝试从我开始的泛化“倒带”并回到 C/C++)是,当涉及到加法时,你有以下类型的数学运算变化(让我们关注这一点,因为它更符合问题)。
- 结果是一个单独的变量,在我们的例子 b 中:
b = a + 1;
- 导致相同的变量:
a += 1;
- 递增变量的值:
a++;
扩展一下:
在第一种情况下,b 的值将被覆盖,并且依赖于不同的值(在本例中为 a 和 1 的值)。这里需要关注的是 a 没有改变。
在本例中,a 接收一个新值并按右侧值递增,在本例中为 1。通过添加一个(不递增)来更改 a
在我们的例子中,与 #2 类似,8a* 的值被更新,但递增是按 1 完成的。
除了句法糖或代码风格偏好之外,两者之间的区别还在于变量分配其值的方式(更正式地说,在汇编代码中的“下面”)。对于刚开始编程的人来说,这个话题要复杂得多,但专注于这个问题,答案很简单,++将值递增1。
另请注意,和 之间的某些编码流程存在差异。主要在循环中。因为该值是在执行代码之前设置的,使用代码中已经递增的值,而首先使用当前值,然后递增它。++a
a++
++a
a++
试试这个:
int i = 0;
while (++i < 100)
{
std::cout << i << std::endl;
}
...对。。。
int i = 0;
while (i++ < 100)
{
std::cout << i << std::endl;
}
然后计算每个案例写了多少行。
您还应该注意一个小警告,它更高级一些,所以它对你来说只是一个小小的“仅供参考”。有两种C++技术,称为“函数重载”和“运算符(重新)定义”。让我们关注第二个。您可以构建自己的数据类型(例如结构或类)并实现自己的运算符,这些运算符执行的操作与算术对应项执行的操作不同。您将在迭代器定义中看到这一点。在这种情况下,不是“实际值增量”(所以它不是数学计算),而是切换到列表中的下一项。一旦你上了课,你就会遇到这种情况。++
std::vector
评论