| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1309 人关注过本帖
标题:求一个简单的问题,关于自减的
只看楼主 加入收藏
jw510823
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2016-1-15
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:7 
求一个简单的问题,关于自减的
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a=12;
    int b=1;

    int c=a-(b--);  // ①
    int d=(++a)-(--b);  // ②

    printf("c=%d, d=%d\n", c, d);

    system("pause");
    return 0;
}
搜索更多相关主题的帖子: include system return 
2016-03-17 11:35
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:5 
c=a-(b--);  
可以写成
c = a -b;
b = b-1;
如果是c=a-(--b);  
则写成
b = b-1;
c = a -b;
这就是b--和--b的差别。
2016-03-17 11:39
jw510823
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2016-1-15
收藏
得分:0 
按错键了,就先发出去了。问题是: int d=(++a)-(--b) 不应该是int d=13-0吗  d的值应该是13才对啊  为什么是14呢?--b 是先自减 在赋值 原先B=1  先减的话值应该是0 在赋值 那么D的值就应该是0才对啊  为什么我在书上看的是-1呢?不理解 求解
2016-03-17 11:40
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
回复 3楼 jw510823
b在执行上一句后已经是0不是1了。
2016-03-17 11:42
老瓢
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2016-3-5
收藏
得分:5 
int c = a-(b--);
/*这一行语句中,虽然对b--加了圆括号,但是因为是b--所以是先对b进行运算然后再b--,也就是a-b赋值给c,然后b-- ; 所以c的值是12-1,b的值自减后是0 */
int d = (++a)-(--b);
/*这一行语句中,因为(++a)是对a先自加,再运算,所以a变成了12+1即13,(--b)是对b先自减,所以b变成了0-1即-1,然后d = 13-(-1). 即14 */
所以c = 11,d = 14
图片附件: 游客没有浏览图片的权限,请 登录注册

2016-03-17 11:48
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:5 
纠结这个没大用的,你就记住基本的,++或--在变量前的话就是先执行++或--,然后调用变化之后变量的值;如果++或者--在变量后的话,先调用未变化的变量的值,然后再执行++或--的操作
2016-03-17 11:50
jw510823
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2016-1-15
收藏
得分:0 
回复 5楼 老瓢
还是有点不理解最后一个(--b)这个  原先的值是1  先自减不应该是1-1=0   在进行赋值操作吧0赋给B吗? 所以B的值难道不是0吗
2016-03-17 11:53
亲琪琪
Rank: 2
等 级:论坛游民
帖 子:55
专家分:38
注 册:2016-3-12
收藏
得分:5 
i++是先赋值在加加 ++i是先加加在赋值
2016-03-17 12:02
快速回复:求一个简单的问题,关于自减的
数据加载中...
 
   



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

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