找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1667|回复: 10
打印 上一主题 下一主题
收起左侧

关于C语言优先级别问题

[复制链接]
跳转到指定楼层
楼主
ID:929847 发表于 2021-8-18 17:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
如题:index = crch ^ *ptr++;    这个赋值运算是不是这样,先把指针*ptr的值+1以后再与crch异或,然后赋值给index,不是很清楚,所以问问大神么
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

11#
ID:353115 发表于 2021-8-27 13:01 | 只看该作者
index = crch ^ *ptr++;
1、先算ptr++,由于参与在表达式中,运算结果暂时保留而不更新
2、*ptr得到指针所指向的值
3、crch 与 *ptr相异或,得出的结果赋值给index
4、ptr++的结果更新到ptr中
回复

使用道具 举报

10#
ID:353115 发表于 2021-8-27 12:59 | 只看该作者
1、先算ptr++,由于参与在表达式中,运算结果被暂时保留而不更新
回复

使用道具 举报

9#
ID:624769 发表于 2021-8-27 04:26 | 只看该作者
???++ 都是最后加。
++ ???? 都是先加,再做别的。
回复

使用道具 举报

8#
ID:892737 发表于 2021-8-19 21:20 | 只看该作者
这个你可以分开来写,加printf和括号进行一步一步测试
可以查询一下15个优先级表
回复

使用道具 举报

7#
ID:937285 发表于 2021-8-19 19:27 | 只看该作者
++的优先级是最低的,先*ptr,再^,然后再ptr++
回复

使用道具 举报

6#
ID:929847 发表于 2021-8-19 17:32 | 只看该作者
谢谢大神们指点
回复

使用道具 举报

5#
ID:844772 发表于 2021-8-19 08:57 | 只看该作者
不是啊,++在后边是本次运算后再加,所以是按位异或后,再+1。
回复

使用道具 举报

地板
ID:386001 发表于 2021-8-19 08:23 | 只看该作者
在实际编程中,尽量不要写这种不确定的代码,最好就是一个功能一行,或者一个功能加一个括号,
这样的好处:
一来,是方便于我们自己理解代码,要不然,自己写的代码,过上半个月去维护代码的时候,又要琢磨大半天才能理解:
二来,由于不同的编译器,对一些优先级可能定义不同,结果会造成程序有时正常,有些不正常
回复

使用道具 举报

板凳
ID:401564 发表于 2021-8-18 20:29 | 只看该作者
这不是几分钟就能解决的事吗?
指针结合数组输出.通过显示看运算结果
然后,加括号,对比一下就知道优先等级了
一般来说,不确定的话,就加括号
回复

使用道具 举报

沙发
ID:935919 发表于 2021-8-18 19:16 | 只看该作者
具体优先级我也忘记了.

不过在这条语句前临crch=5, *ptr=4, 先试试(debug)看index的结果.
不对的话, ptr指向一个数组首地址, 数组[0] = 3, 数组[1] = 5, 再试试看是否是ptr先++

总之, 调试一下就知道了, 我自己就不试了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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