1 个回答
a13670109993
回答于 2024-07-20
已采纳
提问:c语言数组赋值
#include <stdio.h># define N 5void fun(int x[N]){ int m; for(m=N-1;m>=0;m--) scanf("%d",______);}a.&x[++m]b.&x[m+1]c.x+(m++)d.x+m答案说ab是赋值倒了,a【5】、a【4】、a【3】、a【2】、a【1】,正确答案是d,但我感觉也是倒的,求解?!
网友回答:
a不是赋值倒了,而是下标溢出了
对数组int a[5],它只能用a[0],a[1],a[2],a[3],a[4],不能用到a[5]的,这个是常识
因为第一个m=N-1=4
而答案a中,因为是++m,所以第一个是a[5]明显下标输出,且循环是m--,而循环体中是++m死循环了(虽然语法支持,但从不建议在循环中改变循环变量的)
而b同样的下标溢出
c是明显的死循环
只有d是正确的.它与倒置无关的
我来回答
相关问题
1
回答
游戏王卡组推荐
单机游戏
567 浏览