【发布时间】:2021-06-09 07:24:18
【问题描述】:
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
ll n,k;
int count=0;
cin>>n>>k;
for(int i=0;i<k;i++)
{
if(n%10!=0){
n=n--;
}
else {
n=n/10;
}
}
cout<<n<<endl;
}
在for循环中执行减量操作后,n的值没有改变
【问题讨论】:
-
不确定什么是好的副本。这是相关的:stackoverflow.com/questions/56179965/pre-vs-post-increment。你想要
n--;而不是n = n--; -
n=n--是未定义的行为。另外:竞争性编程会强化不良习惯,一旦您进行任何真正的编程,您就需要忘记这些习惯。切勿使用#include<bits/stdc++.h>或using namespace std;或#define ll long long int。始终使用-Wall -Werror -
递减 或 分配 - 不要同时尝试两者。在
n--、--n、n -= 1和n = n - 1之间进行选择。 (并阅读它们的全部含义。) -
这是一个糟糕的主意
#define ll long long int,尤其是当您可以轻松地将其替换为适当的typedef或使用指令时
标签: c++ loops for-loop variables