C 整数数组中元素的不同打印输出
我试着在数组中对元素进行代码计数,效果很好。C 整数数组中元素的不同打印输出,c,C,我试着在数组中对元素进行代码计数,效果很好。 问题是gcc使用main()中的for-语句和函数调用countreturn(size\t sz,int*arr)打印不同的输出 下面是输出和代码。。 输出: ---------- 11 132766 五, 0 -语句的打印1,而不是32766,但使用函数时打印32766 #include<stdio.h> int countreturn(size_t sz, int *arr){ int i=0, count = 0;
问题是gcc使用
main()
中的for
-语句和函数调用countreturn(size\t sz,int*arr)
打印不同的输出
下面是输出和代码。。
输出:
----------
11
132766
五,
0
-语句的
打印1,而不是32766,但使用函数时打印32766
#include<stdio.h>
int countreturn(size_t sz, int *arr){
int i=0, count = 0;
while(arr[i]!='\0'&&i<sz){
++i;
++count;
printf("%d ",arr[i]);
}
printf("\n");
return count;
}
int main(){
int store[5] = {[0 ... 4] = 1 };
printf("-----------------\n");
for(int i = 0; i <5; ++i){
printf("%d ", store[i]);
}
printf("\n");
printf("-----------------\n");
int store2[500] = {'\0',};
printf("%d\n", countreturn(sizeof(store)/sizeof(int),store));
printf("%d\n", countreturn(sizeof(store2)/sizeof(int),store2));
return 0;
}
#包括
int countreturn(size_t sz,int*arr){
int i=0,count=0;
而(arr[i]!='\0'&&i将增量移动到打印数组元素0-4,
而不是元素1-5,这意味着访问超出了数组大小,并获得未定义的行为和任何奇怪的值
while(arr[i]!='\0'&&i<sz){
++count;
printf("%d ",arr[i]);
++i;
}
while(arr[i]!='\0'&&i问题是您首先递增i的值,然后打印存储在第i个索引中的值,这就是代码打印垃圾值的原因
#include<stdio.h>
int countreturn(size_t sz, int *arr){
int i=0, count = 0;
while(arr[i]!='\0'&&i<sz){
printf("%d ",arr[i]); //print first then
++i; // increment value if i
++count;
}
printf("\n");
return count;
}
int main(){
int store[5] = {[0 ... 4] = 1 };
printf("-----------------\n");
for(int i = 0; i <5; ++i){
printf("%d ", store[i]);
}
printf("\n");
printf("-----------------\n");
int store2[500] = {'\0',};
printf("%d\n", countreturn(sizeof(store)/sizeof(int),store));
printf("%d\n", countreturn(sizeof(store2)/sizeof(int),store2));
return 0;
}
#包括
int countreturn(size_t sz,int*arr){
int i=0,count=0;
顺便说一下,(arr[i]!='\0'&&ib,gcc版本是4.2.1,我使用mac os xIf,如果数组维度是5
,它包含5
元素,那么'/0'
结束标记在哪里?