为什么这C++代码不适用于负整数

Why does this C++ code not work for negative integers?

本文关键字:适用于 整数 不适用 代码 C++ 为什么      更新时间:2023-10-16
#include<iostream>
using namespace std;
int x;
int y;
int z;
int main ()
{
    cout << "x=";
    cin >> x;
    z = x;
    y = 0;
    while(z > 0)
    {
        (z = z / 10);
        (y = y + 1);
    }
    while(z < 0)
    {
        (z =- z);
        (z = z / 10);
        (y = y + 1);
    }
    cout << "cifre=" << y;
}

它似乎适用于正整数,但不适用于负整数,我不明白为什么。有人可以解释一下吗?它必须计算位数...

它可能不适用于

负整数,因为z的符号在while (z<0)循环的每次迭代中都会翻转。因此,循环将在第一次迭代后停止,y为 1。

使用这个

cout <<"x=";
cin >>x;
z=x;
y=0;
if(z<0)
    z=-z;
while(z>0)
{
    z=z/10;
    y=y+1;
}
cout <<"cifre=" <<y;