| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 547 人关注过本帖, 1 人收藏
标题:运算级后问题。
只看楼主 加入收藏
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
结帖率:95.37%
收藏(1)
已结贴  问题点数:20 回复次数:9 
运算级后问题。
#include<stdio.h>
int main()
{
    int a=-1,b=4,k;
    k=(++a<0)&&!(b--<=0);//  这一步(++a<0)&&!(b--<=0) 是怎么执行的??
    printf("%d\n%d\n%d\n",a,b,k);
    return 0;
 }
 //还有一个
b=1;
a=b++  //结果是a=1,不应该a=b之后再加一,结果等于2吗?
a=++b  //结果 a=2;
2017-03-22 20:52
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10565
专家分:43004
注 册:2014-5-20
收藏
得分:20 
int a=-1,b=4,k;
k=(++a<0)&&!(b--<=0);
相当于:
++a;
k=(a<0);
if (k) k=!(b--<=0);
因k==0, k=!(b--<=0)没执行。

a=b++;
相当于:
a=b;
b++;

a=++b;
相当于:
++b;
a=b;
2017-03-22 21:11
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
a=b++;执行后是 a=1.b=2?
++a;
++a;
k=(a<0);
if (k) k=!(b--<=0);   这为什么是if语句?
因k==0, k=!(b--<=0)没执行。  
2017-03-22 21:29
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10565
专家分:43004
注 册:2014-5-20
收藏
得分:0 
以下是引用花脸在2017-3-22 21:29:53的发言:

a=b++;执行后是 a=1.b=2?...执行过程是b=1;a=b;b++;结果不是a=1,b=2吗?
++a;
++a;
k=(a<0);
if (k) k=!(b--<=0);   这为什么是if语句?...k就是(++a<0),如果(++a<0)==0就不会再去理!(b--<=0)的。
因k==0, k=!(b--<=0)没执行。  

2017-03-22 23:09
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 4楼 吹水佬
???
2017-03-23 20:39
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10565
专家分:43004
注 册:2014-5-20
收藏
得分:0 
以下是引用花脸在2017-3-23 20:39:58的发言:

???

还有问题?
其实把复杂的语句变换成简单的语句较好理解点就是了。
2017-03-23 20:53
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10565
专家分:43004
注 册:2014-5-20
收藏
得分:0 
以下是引用花脸在2017-3-23 20:39:58的发言:

???

还有问题?
其实把复杂的语句变换成简单的语句较好理解点就是了。
2017-03-23 20:53
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 7楼 吹水佬
不是赋值运算的优先级比算数运算低吗?不应该是先执行b++再执行a=b吗?
2017-03-23 21:30
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10565
专家分:43004
注 册:2014-5-20
收藏
得分:0 
以下是引用花脸在2017-3-23 21:30:25的发言:

不是赋值运算的优先级比算数运算低吗?不应该是先执行b++再执行a=b吗?

这个是b自身的问题,好象与操作符优先级无关。
a=b++;这句里的b++表达的是先将b先赋给a后再是b自身++,就算写成a=(b++);结果也一样。
a=++b;这句里的++b表达的是先将b自身++后再赋给a。
2017-03-24 07:04
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 9楼 吹水佬
  好吧 谢谢你。
2017-03-26 17:49
快速回复:运算级后问题。
数据加载中...
 
   



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

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