lak*_*m99 4 c header-files operands
每次我试试这个:
long crypt(int *integer)
{
printf("Enter five digit integer:\n");
scanf("%i",integer);
int digit1=integer/10000;
int digit2=(integer%10000)/1000;
int digit3=(integer%1000)/100;
int digit4=(integer%100)/10;
int digit5=(integer%10)/1;
const char *digit1c[10];
const char *digit2c[10];
const char *digit3c[10];
const char *digit4c[10];
const char *digit5c[10];
Run Code Online (Sandbox Code Playgroud)
(还有更多,但这似乎是问题,我会根据要求添加其余的.)
然后它返回此错误:
math2.h:44:20: error: invalid operands to binary / (have ‘int *’ and ‘int’)
math2.h:45:21: error: invalid operands to binary % (have ‘int *’ and ‘int’)
math2.h:46:21: error: invalid operands to binary % (have ‘int *’ and ‘int’)
math2.h:47:21: error: invalid operands to binary % (have ‘int *’ and ‘int’)
math2.h:48:21: error: invalid operands to binary % (have ‘int *’ and ‘int’)
Run Code Online (Sandbox Code Playgroud)
我知道它与我用来初始化数字的运算符有关,我确实尝试将它们的类型更改为"int*"但是这不起作用.那么这里到底发生了什么?
MBy*_*ByD 13
integer是一个指针,以int(int*),所以当你要使用INT它指向,则需要取消对它的引用:
int digit1=(*integer)/10000; // and so on...
Run Code Online (Sandbox Code Playgroud)
参数integer不是int对象;它是一个int*对象,即指针。(并且integer是指针对象的误导性名称。)
如果你改变:
int digit1=integer/10000;
Run Code Online (Sandbox Code Playgroud)
到
int digit1 = *integer / 10000;
Run Code Online (Sandbox Code Playgroud)
并对其余代码进行相应的更改,它至少会编译。 integer是一个指针;*integer是int它指向的对象。
(此外,二元运算符周围的空格将使您的代码更易于阅读。使用空格的另一个好理由是,如果颠倒除法,则:
int digit1=10000/*integer;
Run Code Online (Sandbox Code Playgroud)
将引入/* ... */评论。)
| 归档时间: |
|
| 查看次数: |
84309 次 |
| 最近记录: |