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

C 从不同大小的整数强制转换为指针,c,pointers,C,Pointers,我一直收到这个警告 #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); } c:9:80:警告:从不同大小的整数转

我一直收到这个警告

#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); 
} 
c:9:80:警告:从不同大小的整数转换为指针[-Wint到指针转换]

#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); 
} 
printf(“Char=%c ASCII=%i hex=%x指针=%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); 
} 
代码

#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;
对于(int i=75;i<75+26;i++){
printf(“Char=%c ASCII=%i hex=%x指针=%p\n”,i,i,i,(void*)i);
}
返回(0);
} 

我看不出编译器警告没有回答的问题可能是什么。您有一个类型为
int
(64位平台上为32位)的变量“i”,在主程序中隐藏另一个名为“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
变量强制转换为
void*
,编译器说您不能这样做,因为您的长度为32位。重命名程序中名为
i
的两个变量之一以进行解析。

我看不出编译器警告没有回答的问题可能是什么。您有一个类型为
int
(64位平台上为32位)的变量“i”,在主程序中隐藏另一个名为“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
变量强制转换为
void*
,编译器说您不能这样做,因为您的长度为32位。重命名程序中名为
i
的两个变量中的一个,以进行解析。

您将收到警告,因为变量“i”在同一范围内声明了两次。循环中“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); 
} 
#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);
}
#包括
内部主(空){
对于(int i=75;i<75+26;i++){
printf(“字符=%c ASCII=%i十六进制=%x指针=%p\n”,i,i,i,&i);
}
返回(0);
}
如果你仍然想要两个变量的话

#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); 
} 
#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);
}
#包括
int i;
int*j=&i;
内部主(空){
对于(i=75;i<75+26;i++){
printf(“Char=%c ASCII=%i hex=%x指针=%p\n”,i,i,i,(void*)j);
}
返回(0);
}

您收到警告是因为变量“i”在同一范围内声明了两次。循环中“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); 
} 
#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);
}
#包括
内部主(空){
对于(int i=75;i<75+26;i++){
printf(“字符=%c ASCII=%i十六进制=%x指针=%p\n”,i,i,i,&i);
}
返回(0);
}
如果你仍然想要两个变量的话

#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); 
} 
#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);
}
#包括
int i;
int*j=&i;
内部主(空){
对于(i=75;i<75+26;i++){
printf(“Char=%c ASCII=%i hex=%x指针=%p\n”,i,i,i,(void*)j);
}
返回(0);
}

啊,好的,我不确定是什么导致了警告,以及我应该如何解决问题。谢谢啊好的,我不确定是什么原因导致了警告,以及我应该如何解决这个问题。非常感谢。