Main.c:41:9: warning: assignment makes integer from pointer without a cast temp = *(store + i * SIZE + j);
时间: 2023-09-03 11:27:04 浏览: 80
### 回答1:
这个警告是因为你把一个指针赋值给了一个整型变量。你可以尝试将变量 `temp` 声明为指针类型,或者在赋值时使用强制类型转换。例如:
```
int *temp;
temp = (int*)(store + i * SIZE + j);
```
或者:
```
int temp;
temp = (int)(*(store + i * SIZE + j));
```
不过需要注意的是,这种类型转换可能会引入潜在的错误,所以建议在使用前多加检查。
### 回答2:
该警告是由于在第41行的代码中,将指针赋值给整型变量导致。
在这行代码中,temp是一个整型变量,而*(store i * SIZE j)是一个指针。将一个指针赋值给整型变量是不符合语法规则的,因此编译器会给出这个警告。
要解决这个警告,可以通过对指针进行类型转换来解决。即使用强制类型转换将指针转换为整型,然后再进行赋值操作。修改后的代码如下:
temp = (int)*(store i * SIZE j);
这样就可以消除这个警告。然而,在进行强制类型转换时应该谨慎,因为如果类型转换不正确,可能会导致程序运行错误。所以在进行类型转换前,应该确保转换的类型是正确的,以避免可能的错误。
在修复警告之后,重新编译代码时,该警告将不再出现。但仍建议在进行类型转换时,仔细检查代码逻辑,确保转换的类型是正确的,并且不会引起其他问题。
### 回答3:
该警告是由于将一个指针赋值给一个整数而产生的。在Main.c文件的第41行的语句中,将*(store i * SIZE j)的值赋给了一个变量temp。问题出在这里,*(store i * SIZE j)是一个指针,而temp是一个整数变量,将一个指针赋给一个整数不符合C语言的类型匹配规则。
为了解决这个警告,我们需要进行类型转换。可以通过在赋值语句的左边使用强制类型转换符将指针转换为整数,然后再将其赋给temp。这样,编译器就不会报警告了。
修改后的代码如下:
temp = (int)(*(store i * SIZE j));
通过在赋值语句的左边使用(int)将指针*(store i * SIZE j)转换为整数类型,然后再将其赋给temp变量。这样就消除了编译器的警告。
需要注意的是,这种类型转换可能会导致数据截断或数据损失的情况,因此在进行强制类型转换的时候需要谨慎操作,并确保转换后的类型是正确的,并不会引起其他问题。