OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7224|回复: 16

低手请教一个c语言的问题!

[复制链接]

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1852
金钱
1852
注册时间
2012-9-16
在线时间
287 小时
发表于 2012-12-7 12:01:38 | 显示全部楼层 |阅读模式
 int i=5,j=5,p,p1,p2,q;
      p=(i++);
p1=p+(i++);
p2=p1+(i++);
q=(j++)+(j++)+(j++);
运算结果:p2=18
          q=15
为什么q等于15,q按我的想法是5+6+7=18
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-12-7 12:58:57 | 显示全部楼层
丑陋的表达式, 看不懂 ╮(╯▽╰)╭
https://github.com/roxma
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2012-12-7 13:21:17 | 显示全部楼层
这个没有标准答案,C标准里是未定义的。看编译器怎么处理了。
业余程序玩家。
回复 支持 反对

使用道具 举报

18

主题

100

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1196
金钱
1196
注册时间
2012-3-26
在线时间
387 小时
发表于 2012-12-7 15:29:36 | 显示全部楼层
基本語法沒學好,呵呵
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-12-7 18:07:59 | 显示全部楼层
写成这样,真心没必要,可读性太差了。

这是二级C语言考试题?????

很简单嘛,就是考察你对加1运算的理解吧。

q = 5 + 5 + 5就完了呗。
回复 支持 反对

使用道具 举报

1

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2012-10-3
在线时间
17 小时
发表于 2012-12-7 18:08:01 | 显示全部楼层
先引用 后自加!
第一遍 q=(j++)+(j++)+(j++);//q=15
第二遍 q=(j++)+(j++)+(j++);//q=24  ;因为上次之后 J++;J++,J++ ,运行三遍 j=8. q=3*8=24
第三遍 q=3*11=33;
这是我的理解,可能不对,希望对你有用
相信自己,一切皆有可能!
回复 支持 反对

使用道具 举报

头像被屏蔽

82

主题

191

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
465
金钱
465
注册时间
2011-11-14
在线时间
33 小时
发表于 2012-12-7 23:40:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1852
金钱
1852
注册时间
2012-9-16
在线时间
287 小时
 楼主| 发表于 2012-12-9 15:30:00 | 显示全部楼层
回复【6楼】王剑亮:
---------------------------------
第一遍 q=(j++)+(j++)+(j++);//q=15 
你说先引用,后自加,第一个j++之后表达式里加5,而此时j应当等于6!我的理解,我用的编译器是VC++;
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

1

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2012-10-3
在线时间
17 小时
发表于 2012-12-9 16:10:11 | 显示全部楼层
回复【8楼】象牙塔:
------------------------------
实际上机试试就知道了 我的理解应该是 J++,J++,J++, 运行了三次 ,也许你是对的 ,你试试就知道了,一切以实际为准!
相信自己,一切皆有可能!
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2012-12-10 22:47:59 | 显示全部楼层
被无视了。。。
业余程序玩家。
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2012-12-11 09:43:44 | 显示全部楼层
使用后加1,当前是不变的~C语言比我还烂,哈哈
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-12-11 11:17:30 | 显示全部楼层
回复【11楼】tian123chi:
---------------------------------
那样的表达式在标准里面是没有严格的定义的, 在实现中也不应该这样写代码
如果在C++里面用运算符重载来追踪运算的过程, 最后的计算结果又变得不一样了.
https://github.com/roxma
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2012-12-11 11:27:52 | 显示全部楼层
回复【12楼】Pony279:
---------------------------------
高手,领教了!
回复 支持 反对

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1852
金钱
1852
注册时间
2012-9-16
在线时间
287 小时
 楼主| 发表于 2012-12-11 20:40:52 | 显示全部楼层
回复【12楼】Pony279:
---------------------------------
谢谢!
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

27

主题

274

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2011-11-2
在线时间
11 小时
发表于 2012-12-11 20:58:54 | 显示全部楼层
我倒是觉得LZ出这个题目很有思考意义,
J++的意义是什么,为了安全我都写成++j。
有几个点可以想象的
switch(J++) 
if(J++)
for(;;j++)
{
    if(j)
 }
void add(char j)
{
     j+=j;
}
add(j++);
虽然调试的时候可以发现问题,但是还是值得思考的。
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-12-11 22:07:11 | 显示全部楼层
我感觉尽量少写这样的代码,可读性较差,调起来比较费力。
是可以简化很多地方,而且时不时经常用i++ , ++i 之类的,但是简化到题目这种程度,我感觉实在没有必要啊。
而且不同的编译器翻译的不同啊。
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-12-11 22:08:38 | 显示全部楼层

有本书推荐楼主看看 叫C语言深度解剖。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-19 08:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表