标题: 关于C语言优先级别问题 [打印本页]

作者: 27376054    时间: 2021-8-18 17:04
标题: 关于C语言优先级别问题
如题:index = crch ^ *ptr++;    这个赋值运算是不是这样,先把指针*ptr的值+1以后再与crch异或,然后赋值给index,不是很清楚,所以问问大神么

作者: sinside    时间: 2021-8-18 19:16
具体优先级我也忘记了.

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

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

作者: Y_G_G    时间: 2021-8-18 20:29
这不是几分钟就能解决的事吗?
指针结合数组输出.通过显示看运算结果
然后,加括号,对比一下就知道优先等级了
一般来说,不确定的话,就加括号
作者: sustlixin    时间: 2021-8-19 08:23
在实际编程中,尽量不要写这种不确定的代码,最好就是一个功能一行,或者一个功能加一个括号,
这样的好处:
一来,是方便于我们自己理解代码,要不然,自己写的代码,过上半个月去维护代码的时候,又要琢磨大半天才能理解:
二来,由于不同的编译器,对一些优先级可能定义不同,结果会造成程序有时正常,有些不正常

作者: glinfei    时间: 2021-8-19 08:57
不是啊,++在后边是本次运算后再加,所以是按位异或后,再+1。
作者: 27376054    时间: 2021-8-19 17:32
谢谢大神们指点
作者: xinzhi1992    时间: 2021-8-19 19:27
++的优先级是最低的,先*ptr,再^,然后再ptr++
作者: 1196383236    时间: 2021-8-19 21:20
这个你可以分开来写,加printf和括号进行一步一步测试
可以查询一下15个优先级表
作者: 188610329    时间: 2021-8-27 04:26
???++ 都是最后加。
++ ???? 都是先加,再做别的。
作者: qsssuv    时间: 2021-8-27 12:59
1、先算ptr++,由于参与在表达式中,运算结果被暂时保留而不更新
作者: qsssuv    时间: 2021-8-27 13:01
index = crch ^ *ptr++;
1、先算ptr++,由于参与在表达式中,运算结果暂时保留而不更新
2、*ptr得到指针所指向的值
3、crch 与 *ptr相异或,得出的结果赋值给index
4、ptr++的结果更新到ptr中




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1