从不同大小的整数转换为指针

我不断收到这个警告

c:9:80:警告:从不同大小的整数转换为指针[-Wint-to-pointer-cast]

printf(“Char =%c ASCII =%i hex =%x pointer =%p n”,i,i,i,(void *)i);

#include<stdio.h>

int main (void) {
    int *i;
    for (int i = 75; i < 75 + 26; i++) {
        printf("Char= %c    ASCII = %i    hex = %x    pointer = %p  n", i, i, i , (void*)i ); 
    }
    return(0); 
} 

我没有看到编译器警告没有回答的问题。 你有一个int类型的变量“i”(在64位平台上是32位),在主程序中映射另一个名为“i”的变量。

你将int变量转换为void* ,编译器说你不能这么做,因为你的位置是32位。 重命名程序中名为i的两个变量之一来解决。


你会收到警告,因为变量“i”在同一个范围内被声明了两次。 你的循环中'i'的内存地址不会改变,所以你需要循环外的指针是什么?

#include<stdio.h>

int main (void) {
    for (int i = 75; i < 75 + 26; i++) {
        printf("Char= %c    ASCII = %i    hex = %x    pointer = %p  n", i, i, i , &i );
    }
   return(0);
}

或者仍然如果你仍然想要两个变量。

#include<stdio.h>

int i;
int *j = &i;

int main (void) {
for ( i = 75; i < 75 + 26; i++) {
    printf("Char= %c    ASCII = %i    hex = %x    pointer = %p  n", i, i, i , (void *)j );
}
return(0);
}
链接地址: http://www.djcxy.com/p/28387.html

上一篇: cast to pointer from integer of different size

下一篇: Cast from pointer to integer of different size warning