关键字:C语言 ++ -- do while 循环 条件中带-- 请各位高手帮我分析一下该段程序执行过程,谢谢!
执行以下语句,输出结果为:(预处理我就不写了)main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}另外,“C语言在...
执行以下语句,输出结果为:(预处理我就不写了)
main()
{int y=10;
do{y--;} while(--y);
printf("%d\n",y--);
}
另外,“C语言在执行过程中,不检查数组下标是否越界”这句话是什么意思?麻烦帮我举例说明一下,谢谢! 展开
main()
{int y=10;
do{y--;} while(--y);
printf("%d\n",y--);
}
另外,“C语言在执行过程中,不检查数组下标是否越界”这句话是什么意思?麻烦帮我举例说明一下,谢谢! 展开
3个回答
展开全部
这个是do-while循环,先做一遍do,再判断while中的内容。y--就是先用在减,--y就是先减再用。也就是,第一步,y--,y=9,while判断y=8(--y先减再用)不为0,为真,继续循环。最后printf中,一进去是0,因为是y--,所以是先用再减,则显示的是0。要是printf("%d\n",--y)的话,显示就是-1。
不检查数组下标是否越界就是数组 a[],一共有十个元素(a[0]~a[9]),但是你可以打a[10],不提示错误。
希望能帮到你。
不检查数组下标是否越界就是数组 a[],一共有十个元素(a[0]~a[9]),但是你可以打a[10],不提示错误。
希望能帮到你。
展开全部
输出为0
C语言在执行过程中,不检查数组下标是否越界
C和C++都没有越界的安全检查,例如定义数组vector[10],本来下标应该只有0到9,即vecto[0]到vecto[9],但是你访问vecto[10]等超过下标9的也可以,系统只是按照每一个元素的长度一次去让地址增加罢了,当然肯定这样是不对的,因为后面的数据没有初始化过,不确定,所以后来.NET下的语言都是检查数组的下表是否越界,例如上面,你如果用了下标为我10的,编译都不能通过
C语言在执行过程中,不检查数组下标是否越界
C和C++都没有越界的安全检查,例如定义数组vector[10],本来下标应该只有0到9,即vecto[0]到vecto[9],但是你访问vecto[10]等超过下标9的也可以,系统只是按照每一个元素的长度一次去让地址增加罢了,当然肯定这样是不对的,因为后面的数据没有初始化过,不确定,所以后来.NET下的语言都是检查数组的下表是否越界,例如上面,你如果用了下标为我10的,编译都不能通过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先Y--,Y=9 表达式的值是10
然后--Y,表达式的值是8,Y=8
再Y--,表达式的值是8,Y=7
再--Y,表达式的值是6,Y=6
再Y--,表达式的值是6,Y=5
再--Y,表达式的值是4,Y=4
再Y--,表达式的值是4,Y=3
再--Y,表达式的值是2,Y=2
再Y--,表达式的值是2,Y=1
再WHILE(--Y),表达式的值是0,Y=0,循环结束
printf(
然后--Y,表达式的值是8,Y=8
再Y--,表达式的值是8,Y=7
再--Y,表达式的值是6,Y=6
再Y--,表达式的值是6,Y=5
再--Y,表达式的值是4,Y=4
再Y--,表达式的值是4,Y=3
再--Y,表达式的值是2,Y=2
再Y--,表达式的值是2,Y=1
再WHILE(--Y),表达式的值是0,Y=0,循环结束
printf(
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询