c++的自增强制转换

C++ Cast increment cast

本文关键字:转换 增强 c++      更新时间:2023-10-16
someobject* scratchpad[10000][33];

我想在一个语句中做到这一点:

unsigned int index = (int) scratchpad[j][0];    
scratchpad[j][0] = (someobject*) (index + 1);

我以为是:

unsigned int index = (unsigned int) ++((char*)scratchpad)[j][0];

但是我不太懂语法。我实际上是在第一个(0)子数组索引中存储一个整数

不要在第一个子数组索引中存储整数。把它放在别的地方。认真对待。

但如果你是一个绝对的疯子,唯一的目标是让别人讨厌你,那么在unsigned int不大于指针的假设下,这是可行的。

unsigned index = ++reinterpret_cast<unsigned&>(scratchpad[j][0]);
http://coliru.stacked-crooked.com/a/99043130e74913f9

我觉得你没有告诉我们你的问题是什么。所以我只能猜测这是你真正需要的:

++scratchpad[j][0];

假设scratchpad只是一个指针数组,您只想增加其中一个。如果是这种情况,您根本不需要强制类型转换,因此工作完成,所有丑陋的代码都消失了。否则,你需要用文字来说明。

我写这篇文章是作为回答而不是评论,所以(希望)大量的赞会让你相信我是对的。

 unsigned int index = (unsigned int) ++((char*)scratchpad)[j][0];

即使它工作(它不应该....)这不是你应该拥有的它是神秘的,很难阅读。

2行很好,虽然我不确定你是否……什么是some-object和unsigned int…我会在评论里问的