C语言中的自增自减问题 求大神解释 高分。。

[复制链接]
查看11 | 回复3 | 2011-1-20 21:23:14 | 显示全部楼层 |阅读模式
有两个题目*是乘号
main()
{float a=1,b;
b=++a*++a;
printf(“%f\n”,b)

第二个main()
{int x=5,y;
y=++x*++x;
printf(“y=%d\n”,y)
第一题答案是6.000000 第二题答案是49我就想知道第一个的6和第二个的49是怎么得出来的比如第一个是不是2*3=6为什么我感觉这两个主体差不多 但是思想不一样。。。初学C语言希望大神们赐教

回复

使用道具 举报

千问 | 2011-1-20 21:23:14 | 显示全部楼层
首先我你要要确定,自加自减的优先级要比要比算术运算符的优先级高,也就是说先计算自加自减;(1)a的初值为1,前面一个"++a"为2=1+1,后面一个”++a“为3=2+1,最后b=2*3=6;(2)这个题目和上面的一题是一个类型的,你上面的答案有错误,我重新给你解释一下。
x的初值为5,前面一个"++x"为6=5+1,后面一个”++x“为7=6+1,最后b=6*7=42;
回复

使用道具 举报

千问 | 2011-1-20 21:23:14 | 显示全部楼层
++的优先级比*高,先进行自增运算再相乘。。。。。第一题中,初值a=1,则++a=2,这里是第一个++a。。到了第二个++a中,a经过第一个++a已经变成2,再自增就变成3,所以b=2*3=6.。。第二题的y=...语句应该不是这样子你再仔细看看,否则就和第一题一摸一样(除了数值类型和输出样式)了
回复

使用道具 举报

千问 | 2011-1-20 21:23:14 | 显示全部楼层
问一下,你确定第二个是这个样子的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行