gpt4 book ai didi

c++ - 这在内部是如何工作的 int const iVal = 5; (int&)iVal = 10;

转载 作者:太空宇宙 更新时间:2023-11-04 05:02:02 25 4
gpt4 key购买 nike

我想知道以下在编译器级别是如何工作的。

int const iVal = 5; 
(int&)iVal = 10;

一点 m/c 或编译器级别的答案就足够了。

提前致谢。

最佳答案

undefined behavior .

在第一行中,您定义了一个常量整数。此后,在您的程序中,允许编译器仅将 iVal 替换为值 5。它可能会改为从内存加载它,但可能不会,因为那样不会带来任何好处。

第二行写入编译器告诉您包含数字 5 的内存位置。但是,这不能保证有任何效果,因为您已经告诉编译器该值不会改变。

例如,下面将定义一个包含5 元素的数组,并打印一个未定义的值(或者它可以做任何它想做的事!它是未定义的)

int const iVal = 5;
(int&)iVal = 10;
char arr[iVal];
cout << iVal;

生成的程序集可能类似于:

sub ESP, 9      ; allocate mem for arr and iVal. hardcoded 5+sizeof(int) bytes
; (iVal isn't _required_ to have space allocated to it)
mov $iVal, 10 ; the compiler might do this, assuming that you know what
; you're doing. But then again, it might not.
push $cout
push 5
call $operator_ltlt__ostream_int
add ESP, 9

关于c++ - 这在内部是如何工作的 int const iVal = 5; (int&)iVal = 10;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/661464/

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