完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
为什么我编写代码创建者2,将会有两种不同的情况
我写 { COMTXBuff[4 +DPTR+DPTR]=MODBAMRAM〔CORRXBASIC〔3〕+DPTR++〕; } 写作 { COMTXBuff[4 +DPTR+DPTR]=MODBAMRAM〔CORRXBASIC〔3〕+DPTR〕; DPTR++; } 会得到不同的结果吗? (谷歌翻译的翻译) 以上来自于百度翻译 以下为原文 Why I write code creator 2.0, there will be two different situations I wrote { commTxBuffer [4 + dptr + dptr] = modbusRAM [commRxBuffer [3] + dptr ++]; } And writing { commTxBuffer [4 + dptr + dptr] = modbusRAM [commRxBuffer [3] + dptr]; dptr ++; } Will get different results? (Translation on google translate) |
|
相关推荐
4个回答
|
|
1.左边没有右边的改变。
您的DPTR在右侧被修改,因此在保存值时,它将使用已更改的DTPR。 在第二个示例中,DPTR在第一行上没有改变,在写指令之后在第二行中递增。 以上来自于百度翻译 以下为原文 1. NEVER have a vaiable on the left side changed on the right side your dptr is modified on the right side, so when saving the value, it would used the CHANGED dptr In your second example, your dptr doesn't change on the first line, it was incremented in the 2nd line, after the write instruction |
|
|
|
我也不会使用DPTR,因为DPSTRAN应该是PSOC3中的一个保留名称,这是一个8051内核。
以上来自于百度翻译 以下为原文 I also would not use dptr as dptr should be a reserved name in PSOC3 which is a 8051 core. |
|
|
|
问题在于,在C中,没有定义首先要做什么评价、结果的地址(LValk)或在等号的右手边的表达式。所以编译器的改变会引起我们完全不同的行为。对每个程序员来说都是噩梦!
看看这里的HTTP//Pusith.GbDist.Cu.UK/CyBoo/Chrut8/StordNo.Posit.HTMLAT“序列点”,并看到,您所得到的问题完全是: {i}= i++; 快乐编码 鲍勃 以上来自于百度翻译 以下为原文 The problem is that in C it is not defined what evaluation has to be done first, the address of the result (LValue) or the expression at the right hand side of the equal sign. So a change of / in the compiler could induce a completely different behaveour. A nightmare for every programmer! Have a look here http://publications.gbdirect.co.uk/c_book/chapter8/sequence_points.html at "Sequence Points" and see, that exactly the problem you have got is mentioned: NEVER use constructs like a{i] = i++; Happy coding Bob |
|
|
|
我用设计师写作
{ COMTXBuff[4 +DPTR+DPTR]=MODBAMRAM〔CORRXBASIC〔3〕+DPTR++〕; } 将等于创建2 { COMTXBuff[4 +DPTR+DPTR]=MODBAMRAM〔CORRXBASIC〔3〕+DPTR〕; DPTR++; } (谷歌翻译的翻译) 以上来自于百度翻译 以下为原文 I use Designer writing { commTxBuffer [4 + dptr + dptr] = modbusRAM [commRxBuffer [3] + dptr ++]; } Will be equal to Create 2.0 { commTxBuffer [4 + dptr + dptr] = modbusRAM [commRxBuffer [3] + dptr]; dptr + +; } (Translation on google translate) |
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2105 浏览 1 评论
1851 浏览 1 评论
3669 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1786 浏览 6 评论
1536 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
568浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
422浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
437浏览 2评论
383浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
915浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 09:01 , Processed in 0.999215 second(s), Total 84, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号