C语言程序,求解为什么运行结果是这样的,a为什么等于-60???

C语言程序,求解为什么运行结果是这样的,a为什么等于-60???,第1张

这个输出的值是不确定的。你若实际上机去试一下这个程序,可以说99%的可能不是输出这个值,而是别的一个不同的值,而且,如果在声明a数组的后面再加一个b数组,如:

int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11},b[100]

重新编译一次,它的输出又会不一样了。

这是因为它输出的是以十进制形式输出a数组的首地址。图中前5行的输出全是一样的地址。所以输出的值就是一样的。至于具体一样是多少,这要看系统分配红a数组的地址是怎么样的了,所以说是不能确定的。

这种问题十分没有意义,准确地说,此题答案不唯一,不同的系统会对这个表达式进行不同的解释,

1.

等号是右结合性 *** 作符,所以运算过程是从右到左的,

首先计算

x-=x*x,之后整个表达式变成了

x+=-30,此时,x==6因此,最终结果是-24

2.

等号是右结合性 *** 作符,所以运算过程是从右到左的,

首先计算

x-=x*x,之后,x=-30,然后再执行x+=x所以,结果就是x==-60


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11833019.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存