在一次测试中,我的一个同学编写了以下函数来翻转数字:
int tukor(int n)
{
int k=0;
while(n!=0)
{
k=k*10+n%10;
n=n/10;
}
n=k;
}
您会注意到完全没有任何返回语句,但在运行cout<<tukor(1234);
时(使用namespaaace std
),它会输出4321
。现在,即使在教师在函数末尾添加了行n=0;n=12;
之后,整个班级仍然对这种可能性感到困惑。到目前为止,它已适用于所有测试用例。
这是由未定义的行为引起的吗?
编辑:在n = k语句之前更改k会更改返回值,如果删除,则返回值为0.