将十进制转换为十六进制,找不到我的逻辑错误

Convert decimal to hex, can't find my logic error

本文关键字:我的 错误 找不到 十进制 转换 十六进制      更新时间:2023-10-16

我是C++和编码的新手。 我知道有逻辑错误,但我无法识别它。 我正在尝试输入一个小数,并将输出连接为十六进制。 它似乎只运行循环一次,即使控制变量显然还不是 0。

int main()
{
    long rem = 0,
    int hex = 0; 
    cout << "enter the number to convert ";
    cin >> rem;     
    hex = rem / 16;
    while (rem > 0)
    {
        rem = rem % 16;
        hex = hex + rem;
        cout << hex << "" << rem << endl;
        rem = rem / 16;
    }
    return 0;
}

如果您需要做的就是以十六进制输出值,则可以使用 std::hex 格式标志。例如:

long rem = 16;
std::cout << std::hex << rem << std::endl; //prints 10

现场演示

#include <iostream>
using namespace std;
int main() {
    // you have to declare variable independently when you declare different type variable
    long rem = 0;  // you typed (,)
    int hex = 0;
    cout << "enter the number to convert ";
    cin >> rem;
    hex = rem / 16;
    while (rem > 0)
    {
        rem = rem % 16; // after this, rem is lower then 16 (remain operator)
        hex = hex + rem;
        cout << hex << "" << rem << endl;
        rem = rem / 16; // so rem must be 0 because rem is lower then 16
    }
    return 0;
}
实际上,即使

我解决了您的问题,您的代码也无法正常工作,但这就是您的循环仅运行 1 次的原因。