| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10388 人关注过本帖
标题:printf("%d %d %d %d",i++,i++,++i,++i);求解
只看楼主 加入收藏
mayudong1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:348
专家分:21
注 册:2006-4-18
收藏
 问题点数:0 回复次数:21 
printf("%d %d %d %d",i++,i++,++i,++i);求解
int main()
{
int i=0;
printf("%d %d %d %d",i++,i++,++i,++i);
getch();
return 0;
}

输出结果3 2 2 1
谁能给解释下呢
搜索更多相关主题的帖子: printf 求解 
2006-12-25 22:29
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
我测试了一下。。。
事实证明TC是从右往左算的(从红色往左算过去的)。。。也就对了。。。
测试程序如下

int main()
{
int i=0;
printf("%d %d %d %d",i++,i++,++i,++i,printf("d"));
getch();
return 0;
}

你看看我的这个printf("d")是打印在最后一个数字之后,还是第一字数字之前,程序运行结果显示在第一个数字之前,也就是说TC先算了++i,也就是从右往左算的

[此贴子已经被作者于2006-12-25 22:45:35编辑过]


这个社会太复杂。。。
2006-12-25 22:42
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
测试程序运行结果如下
d3 2 2 1
说明printf("d")最先执行的

这个社会太复杂。。。
2006-12-25 22:47
mayudong1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:348
专家分:21
注 册:2006-4-18
收藏
得分:0 
然后呢?
3 2 2 1是怎么会事?

2006-12-25 23:11
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
这个不就正常了吗。。。说起来也一大串。。。也就是++i和i++的区别了。。。书上有。。看看吧

这个社会太复杂。。。
2006-12-25 23:18
huyekwok
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-12-15
收藏
得分:0 
这是关于运算级别的问题了
for an instance;
i=0;
a=i++;
++的级别优先于=,而++是从右向左运算,所以先自加,再赋值,i++后,i变为1,而整个式子赋值到a的时候a还是0

而a=++i时,
a=1;
这个就是i++;++i的区别了
2006-12-25 23:31
superkuuga
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-8-1
收藏
得分:0 

其实我们用输出的那个命令本身就是个函数;其为从实到形,从右到左传送.
for example: printf("%d%f",x+y,f(3));过程中是f(3),x+y,%d%f,分别传递给了printf(xp,int x,float y)中的float y;int x; xp.


2006-12-26 00:50
xingyu23
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-21
收藏
得分:0 
楼上的.在吗?帮个忙!~
2006-12-26 00:54
mayudong1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:348
专家分:21
注 册:2006-4-18
收藏
得分:0 
以下是引用superkuuga在2006-12-26 0:50:19的发言:

其实我们用输出的那个命令本身就是个函数;其为从实到形,从右到左传送.
for example: printf("%d%f",x+y,f(3));过程中是f(3),x+y,%d%f,分别传递给了printf(xp,int x,float y)中的float y;int x; xp.

怎么冒出来个xp呢?


2006-12-26 10:38
senyee
Rank: 1
等 级:新手上路
帖 子:422
专家分:0
注 册:2006-11-28
收藏
得分:0 
书上都有的~~

从右往左运算

菜鸟~~请多指教~~
2006-12-26 12:56
快速回复:printf("%d %d %d %d",i++,i++,++i,++i);求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012766 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved