搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求一个简单的问题,关于自减的
标题:
求一个简单的问题,关于自减的
只看楼主
jw510823
等 级:
新手上路
帖 子: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
等 级:
贵宾
威 望:
54
帖 子:1409
专家分:5845
注 册:2016-2-14
第
2
楼
得分: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
等 级:
新手上路
帖 子:13
专家分:2
注 册:2016-1-15
第
3
楼
得分: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
等 级:
贵宾
威 望:
54
帖 子:1409
专家分:5845
注 册:2016-2-14
第
4
楼
得分:0
回复 3楼 jw510823
b在执行上一句后已经是0不是1了。
2016-03-17 11:42
老瓢
等 级:
新手上路
帖 子:1
专家分:5
注 册:2016-3-5
第
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
等 级:
贵宾
威 望:
14
帖 子:647
专家分:2067
注 册:2015-6-18
第
6
楼
得分:5
纠结这个没大用的,你就记住基本的,++或--在变量前的话就是先执行++或--,然后调用变化之后变量的值;如果++或者--在变量后的话,先调用未变化的变量的值,然后再执行++或--的操作
2016-03-17 11:50
jw510823
等 级:
新手上路
帖 子:13
专家分:2
注 册:2016-1-15
第
7
楼
得分:0
回复 5楼 老瓢
还是有点不理解最后一个(--b)这个 原先的值是1 先自减不应该是1-1=0 在进行赋值操作吧0赋给B吗? 所以B的值难道不是0吗
2016-03-17 11:53
亲琪琪
等 级:
论坛游民
帖 子:55
专家分:38
注 册:2016-3-12
第
8
楼
得分:5
i++是先赋值在加加 ++i是先加加在赋值
2016-03-17 12:02
8
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-462597-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.020009 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved