【发布时间】:2015-10-29 19:59:04
【问题描述】:
我编写了以下代码,用于将十进制数转换为 base2。 可能不是最好的,但它适用于日食。 但是,当我尝试在 Visual Studio 上运行它时,我在第 10 行(强调)收到此错误消息:“表达式未计算为常数”。 这是为什么呢?
long base2(int number) {
int remainder, sizeOfRetNum, isNegative = 0;
if (number<0)
isNegative = 1;
int temp = number;
while (temp != 0) {
sizeOfRetNum++;
temp = temp / 2;
}
char ansString[sizeOfRetNum]; // ********line 10********
int j = sizeOfRetNum - 1;
while (number != 0) {
remainder = number % 2;
number = number / 2;
if (remainder == 0)
ansString[j] = '0';
else
ansString[j] = '1';
j--;
}
long ansNum = atol(ansString);
if (isNegative == 1)
ansNum = -ansNum;
return ansNum;
}
【问题讨论】:
标签: c++