| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 258 人关注过本帖
标题:关于自增自减运算的问题
只看楼主 加入收藏
lantiantieyi
Rank: 1
等 级:新手上路
帖 子:9
专家分:5
注 册:2012-9-5
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:4 
关于自增自减运算的问题
有个小程序:
main()
{
int i = 1,j = 1,k = 2;
if(j ++ || k++ && i++)
printf("%d,%d,%d"i,j,k);
}
结果是2,2,2
请问下k的结果为什么是二,在pintf函数中不进行自增么??
2012-11-30 17:36
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
结果应该是:1 2 2
if是条件判断,括号里边的是或运算当一个为真是,不在继续进行下边的判断。结果应该是 1 2 2.你错了

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-11-30 17:42
lantiantieyi
Rank: 1
等 级:新手上路
帖 子:9
专家分:5
注 册:2012-9-5
收藏
得分:0 
以下是引用一个孩子在2012-11-30 17:42:11的发言:

结果应该是:1 2 2
if是条件判断,括号里边的是或运算当一个为真是,不在继续进行下边的判断。结果应该是 1 2 2.你错了
用VC++运行了是2,2,2
2012-11-30 18:00
wanjiawei
Rank: 4
等 级:业余侠客
帖 子:61
专家分:213
注 册:2012-11-16
收藏
得分:0 
我运行的结果也是:1,2,2
但是我改了下
int main()
{
    int i = 1, j = 1, k = 2;
    if( k++ && i++)
        printf("%d,%d,%d",i,j,k);
 
    return 0;
}他的结果就是:2,1,3了
2012-11-30 18:12
冰冻零点
Rank: 3Rank: 3
来 自:西安电子科技大学
等 级:论坛游侠
帖 子:81
专家分:136
注 册:2012-9-18
收藏
得分:10 
if内的条件是从左到右依次处理的,每个条件可以看成是一个语句。
在a&&b中,会先判断a,如果a为真,继续判断b,但是如果a为假,将不判断b,所以b的副作用不能生效。
同理,在a||b中,若a为假,继续判断b.若a为真,将不判断b.
if(j ++ || k++ && i++)中,j++为真,所以不处理k++,然后处理i++.所以只有j没有自增。
那么楼主给分吧

好好学习,天天向上
2012-11-30 21:37
快速回复:关于自增自减运算的问题
数据加载中...
 
   



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

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