我是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;
}
答案 0 :(得分:2)
如果你需要做的只是以十六进制输出值,那么你可以使用std::hex
格式标志。 E.g:
long rem = 16;
std::cout << std::hex << rem << std::endl; //prints 10
答案 1 :(得分:0)
#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;
}
实际上,即使我修复了你的问题问题,你的代码也不能正常工作,但这就是你的循环运行一次的原因。
答案 2 :(得分:0)
问题在于
{
rem = rem % 16;
...
rem = rem / 16;
}
在rem = rem % 16
之后,rem
包含的数字在以下范围内:[0,16]。然后使用整数除法将此数字除以16,得到0
。