| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 657 人关注过本帖
标题:"++"与","疑点
只看楼主 加入收藏
jackson
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-1-10
收藏
 问题点数:0 回复次数:2 
"++"与","疑点
问题:1. -i++ 它是如何落实从右到左的结合方向?为何是先取i(设i=3)的值,输出-i的值,然后使i增值的?即得到表达式的值是-3.为何表达式的值不是-4?从运行的过程来看,先得出-3,再使i增值变为4,那岂不是从左到右了? 2. (i=3,i++,++i,i+5)这个表达式如何用程序表达出来?它的结果i怎么不是4而是5?难度++i的值赋给了i吗?
搜索更多相关主题的帖子: 疑点 
2005-01-10 08:44
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 
关于先加,后加的问题,已经说了太多遍了,因为不同的编译器,运行的顺序是不一样的,
如果你不是必须这样做,那么就不要把这些写在一个语句中!!!!
而你第一个问题,不是运算顺序的问题,而是后加加就是这样运算的!

差点把你忘了...
2005-01-10 09:16
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

1。 main() { int i=3,j=3,k=3;

printf("-i++ -> %d\n",-i++); printf("i -> %d\n",i);

j++; printf("-j -> %d\n",-j); printf("j -> %d\n",j);

printf("-k -> %d\n",-k); //-i++,就相当以下过程,先取i的值,即3,再变为-3,注意不是将i的值变为-3, //而是这个表达式的值是-3,然后才是i自增1 printf("1.k -> %d\n",k); k++; //你可以认为i的自增是跳出表达式后才进行的确良 printf("2.k -> %d\n",k);

} 2。 main() { /* (i=3,i++,++i,i+5) */

int i, j,k;

j=3; //相当i=3, j++; //相当i++, j++;/* ++j,此时与j++无分别 相当++i,*/ k=j+5; /*表达式的值 i+5就是表达式的值 */

printf("1. k=%d j=%d\n",k,j);

k=(i=3,i++,++i,i+5);

printf("2. k=%d i=%d\n",k,i); } i++与++i相同地方是:i 都自增 1 不同之处,再看 main() { int i=3,j=3;

printf("1.i=%d\n",++i); printf("1.j=%d\n",j++); //不同之处,表达式的值不一样

printf("2.i=%d\n",i); printf("2.j=%d\n",j); //相同之处,最后对于变量本身结果一样 } 学编程光看书是很难理解,不动手等于零。


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-01-10 16:02
快速回复:"++"与","疑点
数据加载中...
 
   



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

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