c++ - 在 C++ 中,如何将 32 位数字传递给“int”变量,而不会将 0x7FFFFFFF 以上的任何内容视为负数?
问题描述
我需要有一个int
变量上升到 4294967295 (0xFFFFFFFF),而不使用unsigned
and long
,所以它实际上可以被其他函数使用。这甚至可能吗?
解决方案
你不能,除非你找到一个int
大于 32 位的平台(在撰写本文时它们很少见)。
如果你需要使用一个signed
类型,那么std::int64_t
是一个不错的选择。或者long long
也保证足够大。
如果您绝对受函数接口的限制,那么您可以将您的数字分成两部分 - 并采用需要调用该函数两次才能从中获得任何意义的约定。但这可能会使您的程序非常脆弱。
另一种选择:如果您的函数被允许int
通过引用,那么您可以在调用站点有一个两个 s 的数组int
,并将第一个传递给您的函数。然后,您可以在函数体内使用指针算术到达另一个!同样,这会使您的代码变脆,但它会起作用。
推荐阅读
- python - 对多个 CSV 中的值求和 python
- sql-server - T-SQL 到 XML 的嵌套和拆分
- ag-grid - AG-GRID 使用没有 SystemJS 的材料组件
- r - 在ggplot中绘制梯形
- laravel - Laravel 命令和作业之间的区别
- c++ - 找不到opencv头文件
- java - Java Streams 是迭代器设计模式的实现吗?
- powershell - 为什么在 powershell 中使用替换运算符时无法对匹配组执行操作?
- symfony4 - 有没有办法在 Sonata Admin 的字段中添加提示
- c# - 统一的 2D PlayerController