gpt4 book ai didi

c++ - 帮助我理解这个奇怪的 C++ 代码

转载 作者:可可西里 更新时间:2023-11-01 18:42:01 24 4
gpt4 key购买 nike

这是我们以前的 C++ 考试中的一道题。这段代码快把我逼疯了,谁能解释一下它的作用,尤其是为什么?

int arr[3]={10,20,30};
int *arrp = new int;

(*(arr+1)+=3)+=5;
(arrp=&arr[0])++;

std::cout<<*arrp;

最佳答案

此语句写入对象 *(arr+1) 两次,中间没有序列点,因此具有未定义的行为

(*(arr+1)+=3)+=5;

此语句向对象 arrp 写入两次,中间没有序列点,因此具有未定义的行为

(arrp=&arr[0])++;

代码可能导致任何事情发生。

引用:ISO/IEC 14882:2003 5 [expr]/4:“在前一个和下一个序列点之间,标量对象的存储值最多应通过表达式的计算修改一次。”

关于c++ - 帮助我理解这个奇怪的 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2985244/

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