首页 > 解决方案 > 在 C++ 中,如何将 32 位数字传递给“int”变量,而不会将 0x7FFFFFFF 以上的任何内容视为负数?

问题描述

我需要有一个int变量上升到 4294967295 (0xFFFFFFFF),而不使用unsignedand long,所以它实际上可以被其他函数使用。这甚至可能吗?

标签: c++

解决方案


你不能,除非你找到一个int大于 32 位的平台(在撰写本文时它们很少见)。

如果你需要使用一个signed类型,那么std::int64_t是一个不错的选择。或者long long也保证足够大。


如果您绝对受函数接口的限制,那么您可以将您的数字分成两部分 - 并采用需要调用该函数两次才能从中获得任何意义的约定。但这可能会使您的程序非常脆弱。


另一种选择:如果您的函数被允许int 通过引用,那么您可以在调用站点有一个两个 s 的数组int,并将第一个传递给您的函数。然后,您可以在函数体内使用指针算术到达另一个!同样,这会使您的代码变脆,但它会起作用。


推荐阅读