c语言问题

[复制链接]
查看11 | 回复5 | 2011-2-12 15:57:09 | 显示全部楼层 |阅读模式
变量前面加--是当函数语句运行前就减1;(函数语句以分号代表一句);变量后面加--是当函数语句运行完之后再减1;所以说第一个printf();中y--是在printf结速之后再减一 所以说输出都是y的值即0;那么第二个printf();输出就是-1了。...
回复

使用道具 举报

千问 | 2011-2-12 15:57:09 | 显示全部楼层
printf("%d\n%d\n",y--,y);此时y==0;y--是先取y的值然后运算,取y的值当然是0了,所以第一个输出的是0 0在第二个输出时y已经为-1了,当然就是输出-1了!...
回复

使用道具 举报

千问 | 2011-2-12 15:57:09 | 显示全部楼层
do {y--; } while(--y);当y=0是,循环结束;此时y=0;printf("%d\n%d\n",y--,y);这里先取值,再y-1,因此两个y都是0;打印输出后,y=-1; printf("%d\n",y);输出自然就是-1了...
回复

使用道具 举报

千问 | 2011-2-12 15:57:09 | 显示全部楼层
这里是由于printf是函数,函数使用的是参数的副本。...
回复

使用道具 举报

千问 | 2011-2-12 15:57:09 | 显示全部楼层
不知道楼主与前面几位是怎么得到的结果...在linux下得到的结果是0-1-1...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行