[error] invalid operands to binary - (have 'long long int' and 'int *')
时间: 2023-05-03 15:02:54 浏览: 159
这个错误是因为在一个减法运算中,两个操作数的类型不匹配。具体来说,左边的操作数是一个long long int类型,右边的操作数是一个int指针类型。减法运算符(-)只能用于相同类型的操作数。这意味着需要将右手边的操作数转换为long long int类型,以匹配左手边的操作数。
解决这个问题的方法是,使用类型转换来将指针类型转换为long long int类型。这可以通过在指针变量前面加上强制类型转换运算符(long long int)来实现。例如,如果右手边的操作数是一个指向int变量的指针,可以这样写:
long long int result = some_long_long_int - (long long int) some_int_pointer;
这样就可以将int指针类型的操作数转换为long long int类型,在减法运算中与long long int类型的操作数匹配,从而避免了类型不匹配的错误。
相关问题
gcc编译出现:error: invalid operands to binary & (have ‘char *’ and ‘int *’)
这个错误通常是因为你在使用 & 运算符时,左边是一个指向字符数组的指针,右边是一个指向整数的指针,而这两种类型是不兼容的。
例如:
```c
char *str = "hello";
int *num_ptr = malloc(sizeof(int));
int result = str & num_ptr; // 这里会出现上述的错误
```
要解决这个问题,你需要确保两边的数据类型是兼容的,或者重新考虑你的代码逻辑。
如果你的意图是想将一个指针转换为整数类型,可以使用类型转换操作符将其强制转换为整数类型:
```c
char *str = "hello";
int num = (int)str; // 将指针转换为整数类型
```
但是需要注意的是,将指针转换为整数类型可能会导致一些未定义的行为,因为指针和整数类型的内存表示方式可能不同。因此,在进行此类转换时,需要确保你的代码逻辑是正确的。
invalid operands to binary >> (have ‘struct page *’ and ‘int’)
这个错误通常是因为你试图将一个 `struct page` 类型的指针进行位移运算,而位移运算符只能用于整数类型。
要想得到一个 `struct page` 类型的指针向右移动指定位数后的结果,你可以使用 `page_to_phys()` 函数将其转换为物理地址,然后再进行位移运算。例如,将一个 `struct page` 类型的指针向右移动 1 位,可以使用以下代码:
```
struct page *p;
phys_addr_t phys = page_to_phys(p);
phys += (1 << PAGE_SHIFT);
p = phys_to_page(phys);
```
其中,`PAGE_SHIFT` 是一个宏定义,表示页面大小的位移量,例如,在 x86_64 架构上,页面大小为 4KB,`PAGE_SHIFT` 等于 12。
上述代码将 `p` 转换为物理地址,并将其加上一个页面大小的偏移量,然后再将其转换回 `struct page` 类型的指针。你可以根据需要调整偏移量的大小。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)