当前位置: 首页 > 知识库问答 >
问题:

在达到数据类型的限制后,是否有一种简单有效的方法来动态更改数据类型?

姬飞昂
2023-03-14

一旦达到数据类型的限制,我想增加该数据类型的大小。例如,假设我有一门课:

struct Counter {
    unsigned short x;
    void IncrementCount() { x++; }
};

一旦我更改了counter.x的值,我希望它将x提升为无符号int而不是无符号short。

int main() {
    Counter c;
    c.x = ~0;  // c.x is max unsigned short value 2^16
    c.IncrementCount();     // c.x is now an unsigned int with value 2^16 + 1, NOT an unsigned short with value 0
}

我这样做的原因是为了在计数器类中存储尽可能少的内存。

共有1个答案

钮出野
2023-03-14

C和C++中的数据类型必须在编译时完全定义。你不能有一个短变量,然后升级为int。

像Python这样的编程语言将数据类型附加到值,而不是变量。这就是为什么你能做到:

a = 1
a = "hi"

因为数据类型附加到值1,然后附加到值“hi”。

class Object {
public:
  virtual Object_ptr add(Object_ptr other) = 0;
};
class IntObject {
public:
  virtual Object_ptr add(Object_ptr other) {
    if (other->dataType() == DATATYPE_INT) {
      return new IntObject(this->value + other->value);
    } else {
      raiseError("dataTypeError");
    }
  }
};
>>> 1<<128
340282366920938463463374607431768211456L
class IntObject {
public:
  virtual Object_ptr add(Object_ptr other) {
    if (other->dataType() == DATATYPE_INT) {
      if (operationWillOverflow(other)) {
        auto a = new LongIntObject(this);
        auto b = new LongIntObject(other);
        return a.add(b);
      } else {
        return new IntObject(this->value + other->value);
      }
    } else {
      raiseError("dataTypeError");
    }
  }
};
 类似资料:
  • 我们创建了 .yaml 文件来在 Kubernetes 集群中部署 osrm/osrm-backend (https://hub.docker.com/r/osrm/osrm-backend/tags)。 我们首先在节点的卷中下载pbf文件,然后为服务创建必要的文件,最后服务启动。 您可以在下面找到yaml文件: 问题是我们需要定期更新osrm服务使用的地图数据。这意味着能够重新下载pbf文件并重

  • 问题内容: 我想在python中创建一个类,它应该像这样工作: 分配的数据,可能绑定到变量(例如或) 插入数据后,它应自动确定数据的某些属性,如果某些属性被填充,它将自动… …将班级改为另一个班级 第三部分是我有问题的部分。我如何真正改变班级内部的班级?例如: 如果我有两个班级,一个是,另一个是;现在我希望将小于1000的任何内容转换为a ,反之亦然,测试代码: 这可能吗? 问题答案: 使用工厂方

  • 我从中向R导入数据的平台不支持指定数据类型,因此我的所有列都是。我有一个Excel文件,指定哪些列是,包括相关的和。现在,我正在尝试编写一个函数来动态更改数据中各个列的数据类型。框架 多亏了对这个问题的出色回答(dplyr-mutate:use dynamic variable names),我成功地编写了以下函数,在其中我动态地将列名设置为函数。 它起作用了,每次迭代都会返回整个数据帧,相关列(

  • 问题内容: 我今天遇到了与此类似的代码。 似乎暗示数据类型信息可以与NULL值关联。这是否将元数据附加到将其标识为指定数据类型的NULL值? 这篇文章详细介绍了一种在SqlServer中查找数据类型的方法,但是当我尝试以下行时,它以NULL的形式返回: 问题答案: 在SQL Server中,是在默认情况下所有我能想到的场景。您可以使用以下代码确定这一点: 结果: 在将其放入表中或将其与某些上下文元

  • 问题内容: 我有一个数据库(),其中有数十个数据库,每个数据库都有许多(平均10-20),数据类型设置为。这绝对是致命的性能(其中一些列用于其中,某些表具有100K+行)。我想将所有这些列更改为。自动执行此操作的最佳方法是什么?(我可以使用,也可以创建一个实用程序来通过可访问db的网站执行此操作,以较容易的为准)。 问题答案: 这是一个工作脚本,用于查找所有列并将其转换为: 这是我曾经宽恕过的唯一

  • 问题内容: 我有一些代码可以返回新的iOS 10 / Swift 3 NSData替换(?)类型:数据 我想将此映像写入磁盘,但是此类不存在NSData的方法。它确实有一个方法,但是似乎不适用于文件路径(和附加组件)。 任何人都可以澄清一下我现在该如何做,就像Swift 2中的情况一样: 谢谢! 问题答案: 使用。 例如: 或者,如果您确实对坚持不懈,请将其转换为: 但是,通常,如今最好在整个代码