问题标签 [size-t]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - “size_t”作为类型参数,未复制强制转换警告
我一直在尝试摆脱一些旧代码中的警告(必须使用 MSVC 2005,目前正在使用 32 位构建),但一直在努力摆脱size_t
to unsigned int
conversion 警告。我们有自己Array<T>
的增长数组的实现,它实现了一个
template<typename I> const T& at(const I i) const {return atImpl(i);}
方法。当被称为
size_t i = 10; myArray.at(i);
我收到conversion from 'size_t' to 'const unsigned int', possible loss of data
警告。一种工作理论被理解I
为unsigned int
,这导致编译器在传递到时将size_t
其转换/转换为(这将是不方便但可以接受的)。但是,我无法在最小工作示例(本文底部)和更复杂的最小示例中重现此警告。简单地转换参数以使警告消失并且足以满足我们的需要(根据合同,数字适合)unsigned int
i
at
unsigned int
unsigned int
- 我对
I
在unsigned int
这样的调用中的理解是否正确(规范说“ A typedef-name 因此是另一种类型的同义词。A typedef-name 不会引入新类型”,typeid(size_t(1)).name()
说unsigned int
并且size_t
似乎被typedef
喂了)。换句话说,最小的例子应该还是不应该给出警告?据我所知,构建配置是相同的。 - 由于我们的代码给了我们警告而最小的例子没有,所以我必须忽略一些东西。尽管付出了很多努力,但我无法弄清楚是什么。想法?
谢谢
最小的例子:
c++ - 将size_t转换成long,有什么缺点吗?
将 size_t 转换为 long 有什么缺点吗?因为,我正在编写一个在文件中维护linked_list 的程序。因此,我根据 size_t 遍历到另一个节点,并且还将列表的总数跟踪为 size_t。因此,显然会有一些 long 和 size_t 的转换或添加。这有什么缺点吗?如果有,那么我会让所有东西都变长而不是 size_t,甚至是尺寸。请指教。
c - 我可以根据 C 标准分配超过 65535 个字节吗?
malloc
定义如下:
http://pubs.opengroup.org/onlinepubs/009695399/functions/malloc.html
size_t
定义(stddef.h):
size_t: Unsigned integer type of the result of the sizeof operator.
http://pubs.opengroup.org/onlinepubs/009604499/basedefs/stddef.h.html
但根据this page,最大限制size_t
为65535。(其他整数类型的部分限制):
size_t 的限制:SIZE_MAX 65535 http://pubs.opengroup.org/onlinepubs/007904975/basedefs/stdint.h.html
这是否意味着当我想遵守 C 标准时,我不能分配超过 65535 个字节?
c++ - 为什么 size_t 是无符号的?
Bjarne Stroustrup 在 C++ 编程语言中写道:
无符号整数类型非常适合将存储视为位数组的用途。使用 unsigned 而不是 int 来获得更多位来表示正整数几乎不是一个好主意。通过声明变量 unsigned 来确保某些值是正数的尝试通常会被隐式转换规则打败。
size_t似乎是无符号的“以获得更多位来表示正整数”。那么这是一个错误(或权衡)吗?如果是,我们是否应该尽量减少在我们自己的代码中使用它?
Scott Meyers 的另一篇相关文章在这里。总而言之,他建议不要使用无符号接口,无论该值是否始终为正。换句话说,即使负值没有意义,也不一定要使用无符号数。
ubuntu - CUDA 2.1“错误:未知类型名称‘size_t’”
系统:Ubuntu 11.10 x86_64 CUDA:v 2.1
在尝试制作像 matrixMul 这样的示例程序时,我遇到了大量错误,其中大部分是“未知类型名称‘size_t’”。我确保将 /usr/local/cuda/bin 放在我的 PATH 中,并将 /usr/local/cuda/lib 放在 /etc/ld.so.conf.d 的 .conf 中。
任何想法为什么我会收到这些错误?
谢谢!
c - 它在 llvm 中相当于 size_t
一些系统库,如 malloc strlen 想要或返回 size_t 作为参数。
- LLVM IR 中与这些函数交互的正确选择是什么?
- 选择是编译器的任务吗?
- LLVM IR 有 size_t 类型吗?
c - c printf size_t
我的代码编译,虽然printf
不显示任何东西?
如果我取出格式化程序的一部分,printf
那么它工作得很好。
c++ - 使用 size_t 差异复制字符串的一部分
我正在尝试遍历字符串并根据初始键值和标识信息块结尾的键值复制信息块。然而,当我尝试减去我的初始值和最终值以找到我正在寻找的块的长度时,我收到了一个看似任意的值。
因此,开始和结束索引通过以下方式找到:
然后我试图做类似的事情:
然而,这并没有给我想要的结果。这是我的代码及其产生的输出的摘录。
输出:25 59 56
很明显,我试图捕获的信息块跨越 3 个字符,但是当我减去这两个字符时,我得到 25。有人可以向我解释为什么会发生这种情况以及我该如何解决它?
c - 低和高 DWORD => size_t
编程语言:C
我有两个 DWORD:一个低的和一个高的。我想将它们都转换为 size_t 类型的一个变量。我有以下代码:
是这样吗?我猜不是因为第一个命令可能将高字节存储在错误的位置,对吧?请帮助我如何做到这一点。谢谢你 :)
size-t - size_t 符号丢失(返回)(int 到 unsigned int))
该程序通过 subtraca 警告消息计算字符串的长度
-\
我的 stringLength 函数返回一个 size_t 是我在格式说明符中的错误还是我如何返回我的值?