gpt4 book ai didi

c++ - 当强制转换的指针具有增量运算符时会发生什么?

转载 作者:IT老高 更新时间:2023-10-28 21:42:25 26 4
gpt4 key购买 nike

例如:

int x[100];
void *p;

x[0] = 0x12345678;
x[1] = 0xfacecafe;
x[3] = 0xdeadbeef;

p = x;
((int *) p) ++ ;

printf("The value = 0x%08x", *(int*)p);

编译上述代码会在带有++ 运算符的行上生成一个 lvalue required 错误。

最佳答案

强制转换创建一个 int * 类型的临时指针。您不能增加临时值,因为它不表示存储结果的位置。

在 C 和 C++ 标准中,(int *)p 是一个 rvalue,大​​致表示只能出现在赋值右侧的表达式.

另一方面,

p 是一个左值,这意味着它可以有效地出现在赋值的左侧。只有左值可以递增。

关于c++ - 当强制转换的指针具有增量运算符时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5365153/

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