关键字: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语言在执行过程中,不检查数组下标是否越界”这句话是什么意思?麻烦帮我举例说明一下,谢谢!
展开
 我来答
hll1566
2010-11-20 · 超过27用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:73.6万
展开全部
这个是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],不提示错误。
希望能帮到你。
zhao61
2010-11-20 · TA获得超过1459个赞
知道小有建树答主
回答量:1065
采纳率:0%
帮助的人:868万
展开全部
输出为0
C语言在执行过程中,不检查数组下标是否越界

C和C++都没有越界的安全检查,例如定义数组vector[10],本来下标应该只有0到9,即vecto[0]到vecto[9],但是你访问vecto[10]等超过下标9的也可以,系统只是按照每一个元素的长度一次去让地址增加罢了,当然肯定这样是不对的,因为后面的数据没有初始化过,不确定,所以后来.NET下的语言都是检查数组的下表是否越界,例如上面,你如果用了下标为我10的,编译都不能通过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友db22614d1
2010-11-20
知道答主
回答量:32
采纳率:0%
帮助的人:8.3万
展开全部
先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(
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式