左侧后增量

左侧后增量,第1张

概述我的印象是,后增量(OR preincrement)只能在相等(=)的右侧进行.但我能够编译下面的代码. 你能帮助我理解这个特定的代码,特别是在线下. 来源: http://www.ibm.com/developerworks/library/pa-dalign/ *data8++ = -*data8;void Munge8( void *data, uint32_t size ) { 我的印象是,后增量(OR preincrement)只能在相等(=)的右侧进行.但我能够编译下面的代码.
你能帮助我理解这个特定的代码,特别是在线下.
来源: http://www.ibm.com/developerworks/library/pa-dalign/
*data8++ = -*data8;voID munge8( voID *data,uint32_t size ) {    uint8_t *data8 = (uint8_t*) data;    uint8_t *data8End = data8 + size;    while( data8 != data8End ) {        *data8++ = -*data8;    }}
解决方法 所以,我很确定这是未定义的行为.除最终分号外没有序列点:
*data8++ = -*data8;

如果data8等于0x20,则它等于:

*(0x20) = -*(0x20);

要么

*(0x20) = -*(0x24);

因为没有办法做出这个决定,(因为你在读取变量时编辑了一个变量,没有交错序列点),这是未定义的行为.

我们可以谈谈下面这段代码的作用.这可能是上述代码的意图.

while( data8 != data8End ) {    *data8 = -*data8;    data8++;}

你在这里所做的事情希望更加直截了当.您正在使用输入数组,并查看它,因此它是一系列8位数字.然后,就地,你否定每一个.

总结

以上是内存溢出为你收集整理的左侧后增量全部内容,希望文章能够帮你解决左侧后增量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1243318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存