| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 526 人关注过本帖
标题:自增自减中的一道难题求解
只看楼主 加入收藏
qq872551969
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:1
帖 子:241
专家分:1377
注 册:2012-7-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
自增自减中的一道难题求解
有一道题:
a=1,b=2,z
z=++a||++b
求a和b的值,我只知道a=2,可是b呢?
大侠写好解题思路哈~
2012-11-15 20:47
qq872551969
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:1
帖 子:241
专家分:1377
注 册:2012-7-13
收藏
得分:0 
程序代码:
#include<stdio.h>
main()
{
    int a,b,c;
    a=1,b=2;
    c=++a||++b;
    printf("a=%d\n b=%d\n",a,b);
}
代码附上

编程交流请加群:【234181324】,一起学习,一起进步,新建的群,主打C语言和JAVA等程序设计,等待高手们的入驻,无论你是高手也好,新手也好,在这里都是平等的,欢迎你们的加入~!【234181324】
2012-11-15 20:52
小强。小强
Rank: 2
来 自:山西大同
等 级:论坛游民
帖 子:42
专家分:56
注 册:2012-11-15
收藏
得分:0 
在逻辑二元表达式的第二个操作数中加入副作用会产生逻辑错误,你所说的z=++a||b++中的b++不会被计算机计算
2012-11-15 20:53
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
收藏
得分:0 
优先级    运算符    结合律                                       
                                                              
           ( )  [ ]  ->  .      从左至右                           
         !  ~  ++  --     (类型) sizeof                     
         +  -  *  &          从右至左                           
                                                            
             *  /  %             从左至右                           
       +  -                从左至右                           
            <<  >>            从左至右                           
          <   <=   >  >=    从左至右                           
            ==  !=            从左至右                           
         &                    从左至右                           
           ^                    从左至右                           
         |                    从左至右                           
        &&                  从左至右                           
           ||                 从右至左                             
           ?:                 从右至左                             
           =  +=  -=  *=  /=  %=  &=  ^=  |=  <<=  >>=    从左至右  
2012-11-15 21:00
qq872551969
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:1
帖 子:241
专家分:1377
注 册:2012-7-13
收藏
得分:0 
回复 2楼 qq872551969
你看懂题了么?我说的是++b 和b++的概念不同!

编程交流请加群:【234181324】,一起学习,一起进步,新建的群,主打C语言和JAVA等程序设计,等待高手们的入驻,无论你是高手也好,新手也好,在这里都是平等的,欢迎你们的加入~!【234181324】
2012-11-15 21:06
liufashuai
Rank: 9Rank: 9Rank: 9
来 自:冥界-魔域-魂殿
等 级:蜘蛛侠
威 望:1
帖 子:370
专家分:1374
注 册:2012-6-22
收藏
得分:5 
b的值为2
因为逻辑||运算先计算第一个式子,发现为1然后直接赋值给c,所以就不计算++b了,

此处 ++b和b++性质是一样的,因为b++是先计算在让b自加,但是,在本语句和下一条语句中间,b的值一定会自加的,所以,只要不是一条语句,++b和b++性质一样

有一种落差是,你配不上自己的野心,也辜负了所受的苦难。






2012-11-15 21:18
qq872551969
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:1
帖 子:241
专家分:1377
注 册:2012-7-13
收藏
得分:0 
回复 5楼 qq872551969
我记得 ++的优先级要比=高吧?怎么会先赋予呢?

编程交流请加群:【234181324】,一起学习,一起进步,新建的群,主打C语言和JAVA等程序设计,等待高手们的入驻,无论你是高手也好,新手也好,在这里都是平等的,欢迎你们的加入~!【234181324】
2012-11-15 21:22
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
收藏
得分:15 
c=(++a||++b);//貌似前边为真 逻辑或 后边的不计算
c=(++a && ++b);//这样就会计算了

#include<stdio.h>
#include <stdlib.h>
int main()
{
    int a,b,c=0;
    a=1,b=2;
    c=++a||++b;
    printf("a=%d\n b=%d c=%d\n",a,b,c);
    c=++a && ++b;
    printf("a=%d\n b=%d c=%d\n",a,b,c);
    system("PAUSE");
    return 0;
}

马马虎虎 不吝赐教 我是路过蹭分滴
2012-11-15 21:25
qq872551969
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:1
帖 子:241
专家分:1377
注 册:2012-7-13
收藏
得分:0 
回复 8楼 zxd543
好的,懂了,谢谢

编程交流请加群:【234181324】,一起学习,一起进步,新建的群,主打C语言和JAVA等程序设计,等待高手们的入驻,无论你是高手也好,新手也好,在这里都是平等的,欢迎你们的加入~!【234181324】
2012-11-15 21:28
易小川x
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-11-13
收藏
得分:0 
回复 楼主 qq872551969
a=2,b=2.啊,  因为自增自减 为单目运算,级别要优先或||的级别,所以输出的a=2,b=2, c就等于1啊,
2012-11-15 21:31
快速回复:自增自减中的一道难题求解
数据加载中...
 
   



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

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