我在InterviewBit中遇到了以下C++代码,以进行十进制到二进制的转换,如下图所示。
class Solution{
public:
string findDigitsInBinary(int n){
string ans;
if(n == 0) return "0";
while(n > 0){
int rem = n % 2;
ans.push_back((char)('0' + rem));
n /= 2;
}
reverse(ans.begin(), ans.end());
return ans;
}
};
我无法理解while循环的第二个语句中发生了什么。
ans.push_back((char)('0' + rem));
这是我对这段代码的解释。
假设我将n的值设为5。
那么,谁能解释我错了吗?
最佳答案
'0' + rem
没有按照您的想法做:'0'
是char
文字,而rem
是int
值。将它们加在一起将产生一个int
,它表示'0'
或'1'
的ASCII值。
更多信息:"Convert an int to ASCII character"