#include<stdio.h>
#define max 3
int main()
{
int array[] = { 1,2,3 };
int i=0 ;
for (size_t i = 0; i < max; i++)
{
printf("array[%d] = %d\n", i, array[i]);
}
return 0;
}
警告 C6246 “i”的局部声明遮蔽了外部作用域中具有相同名称的声明
警告 C6340 符号不匹配: 已将“unsigned int”作为 Param(2) 传递,但需要使用一些 signed 类型来调用“printf”。
看官方解释没看懂
我自己找出来只要不用size_t 声明变量 就不会出现警告
目前就是结果不重要,就像搞清楚为什么出这个警告,之前第一次写完是没有的,怕以后经常出现类似问题请各位帮忙看看.
有点强迫症..
第一个警告是说,for循环中的size_t i 跟第6行的 int i;变量名重复了,把第6行(或者for循环中的i,该第6行只改1处,改for循环的话需要改多处)该个名字即可。
第二个警告是说,printf("array[%d] = %d\n", i, array[i]);这句话中,第二个参数 i 是unsigned int类型,使用%d(arrar[%d]这里 )来输出是不对的,因为unsigned int 需要用%u来输出,unsigned int的正整数 超出 signed int的正整数范围,用%d输出 unsigned int可能会出错。但是,你这里最大值是3,没什么影响,如果要消除这个警告,就把 arrar[%d] 改成 arrar[%u] 即可
把for中的筽换成j