我没有得到这个C程序所需的输出 #包括 #定义总数(sizeof(数组)/sizeof(数组[0])) int数组[]={23,34,12,17204,99,16}; int main() { int d; 对于(d=-1;d

我没有得到这个C程序所需的输出 #包括 #定义总数(sizeof(数组)/sizeof(数组[0])) int数组[]={23,34,12,17204,99,16}; int main() { int d; 对于(d=-1;d,c,arrays,c-preprocessor,C,Arrays,C Preprocessor,TOTAL\u NO返回类型为size\u t的值。这是无符号的,因此d转换为无符号的测试dTOTAL\u NO返回类型为size\u t的值。这是无符号的,因此d转换为无符号的测试d使用宏更好 for(d=0; d<TOTAL_NO; d++) #包括 #定义总数(X)(sizeof(X)/sizeof(X[0])) int数组[10]={23,34,12,17204,99,16}; int main() { int d; 对于(d=-1;d而言,使用宏更好 for(

TOTAL\u NO
返回类型为
size\u t
的值。这是无符号的,因此
d
转换为无符号的测试
d
TOTAL\u NO
返回类型为
size\u t
的值。这是无符号的,因此
d
转换为无符号的测试
d使用宏更好

for(d=0; d<TOTAL_NO; d++)
#包括
#定义总数(X)(sizeof(X)/sizeof(X[0]))
int数组[10]={23,34,12,17204,99,16};
int main()
{         
int d;

对于(d=-1;d而言,使用宏更好

for(d=0; d<TOTAL_NO; d++)
#包括
#定义总数(X)(sizeof(X)/sizeof(X[0]))
int数组[10]={23,34,12,17204,99,16};
int main()
{         
int d;

对于(d=-1;d您应该知道sizeof返回类型size\t,而d是类型int,当您将它们放在一起时,d的类型将变为无符号,而d将变为一个大数字。如下面的代码所示:

#include<stdio.h>
#define TOTAL_NO(X) (sizeof(X) / sizeof(X[0])) 


int array[10]={23,34,12,17,204,99,16};

int main()
{         


int d;
for(d = -1; d <= (int)TOTAL_NO(array); d++) {
 printf(" %d\n",array[d+1]);

}
return 0;

}

您应该知道sizeof返回类型size\u t,而d是int类型,当您将它们放在一起时,d的类型将变为unsigned,而d将变为一个大数字。如下面的代码所示:

#include<stdio.h>
#define TOTAL_NO(X) (sizeof(X) / sizeof(X[0])) 


int array[10]={23,34,12,17,204,99,16};

int main()
{         


int d;
for(d = -1; d <= (int)TOTAL_NO(array); d++) {
 printf(" %d\n",array[d+1]);

}
return 0;

}

为什么不
for(d=0;d
?sizeof(int)返回一个非单精度的int.或size\t结构,其中包含uint32\u t。为什么不
for(d=0;d
?sizeof(int)返回一个非单精度int.或size_t结构,其中包含一个uint32_t。是的,现在工作正常,我忘了sizeof生成无符号整数值。谢谢。是的,现在工作正常,我忘了sizeof生成无符号整数值。谢谢。
#include<stdio.h>
#define TOTAL_NO(X) (sizeof(X) / sizeof(X[0])) 


int array[10]={23,34,12,17,204,99,16};

int main()
{         


int d;
for(d = -1; d <= (int)TOTAL_NO(array); d++) {
 printf(" %d\n",array[d+1]);

}
return 0;

}
int a=-1;
unsigned b=1;
if(b>a)
    //something will never run