所以在我的程序中,我应该让用户输入一个基数,最多 32 个基数,以及一个要转换的随机十进制值。因此,如果用户输入 5 和 10,则必须以 5、4、3 和 2 为基数在屏幕上打印 10。但是,这是我第一次使用动态分配,所以我遇到了奇怪的错误,这是一个我无法修复的。 (d代表十进制值,b代表基数,arrayPtr是我的动态分配数组)
while(d != 0 && d>b)
{
*arrayPtr = digits[(d%b)];
d = d/b;
arrayPtr++;
n++;
}
//print statement to read array backwards to give correct output
for (int i=n-1; i>=0; i--)
{
cout<<"Base "<<i <<": "*(arrayPtr+(i*sizeof(*arrayPtr)))<<" "; }
b--;
cout<<endl;
我收到一个错误(类型为“const char [3]”和“int*”的无效操作数到二进制“operator*”): cout<<"基础"<(arrayPtr+(isizeof(*arrayPtr)))<<""; 谁能帮我理解为什么会这样?
最佳答案
您缺少一个 <<
在 ": "
之间和 *(...)
所以你试图乘以编译器的东西": "
通过括号中表达式的值。
//---------------------v
cout<<"Base "<<i <<": "*(arrayPtr+(i*sizeof(*arrayPtr)))<<" ";
应该阅读
cout<<"Base "<<i <<": "<<*(arrayPtr+(i*sizeof(*arrayPtr)))<<" ";
//---------------------^^
这就是为什么人们倾向于在运算符之间放置空格,以便更容易发现这样的错误。
cout<<"Base "<<i<<": "*(arrayPtr+(i*sizeof(*arrayPtr)))<<" ";
//vs
cout << "Base " << i << ": " << *(arrayPtr + (i * sizeof(*arrayPtr))) << " ";
关于c++ - 错误 : invalid operands of types 'const char [3]' and 'int*' to binary 'operator*' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527515/