gpt4 book ai didi

c - 左侧后增量

转载 作者:太空狗 更新时间:2023-10-29 17:07:21 25 4
gpt4 key购买 nike

我的印象是后增量(或前增量)只能在等于(=)的右侧完成。但是我能够编译下面的代码。你能帮我理解这个特定的代码,尤其是下面的代码吗?来源: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 位数字。然后,就地否定每一个。

关于c - 左侧后增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11088717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com