gpt4 book ai didi

c++ - 表达式未计算为常量- c++

转载 作者:IT老高 更新时间:2023-10-28 22:17:16 26 4
gpt4 key购买 nike

我编写了以下代码,用于将十进制数转换为 base2。可能不是最好的,但它适用于 eclipse 。但是,当我尝试在 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;
}

最佳答案

char ansString[sizeOfRetNum]; 

Variable Length Array并且在 C++ 中不是标准的。像 GCC 等一些编译器允许它们作为扩展,但 MSVS 不会编译它们。

为了得到一个动态数组,你需要使用一个指针和 new

char* ansString = new char[sizeOfRetNum];

或者更好的是,重新编写函数以使用 std::string ,它会为您处理内存管理。

关于c++ - 表达式未计算为常量- c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33423502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com