相关疑难解决方法(0)

unsigned int vs. size_t

我注意到现代的C和C++代码似乎size_t代替int/ unsigned int几乎无处不在 - 从C字符串函数的参数到STL.我很好奇这个原因及其带来的好处.

c c++ size-t

478
推荐指数
5
解决办法
20万
查看次数

在size_t和unsigned int之间绘制线的位置?

我目前正在将我的代码库中的一些用法转换unsigned intsize_t我多年来一直在开发的代码库.我理解两者之间的区别,例如unsigned int,指针可能是32位,size_t可能是64位.我的问题更多的是关于我应该使用哪一个以及人们用来在两者之间进行选择的约定.

很明显,内存分配应该取size_t而不是unsigned int作为参数,或者容器类应该size_t像STL一样用于大小和索引.这些是在阅读size_tvs 的好处时提到的常见案例unsigned int.但是,在进行代码库转换的过程中,我偶然发现了灰色区域中的不少情况,我不确定使用哪种情况.例如,如果4x4矩阵行/列索引应该是size_t一致的,无论索引是否在范围[0,3]中,或者屏幕/纹理分辨率应该使用size_t尽管在几千的范围内,或者一般如果合理的数量为对象应该在数十个范围内,我仍然应该使用它size_t来保持一致性.

你用什么样的编码约定来unsigned int和之间进行选择size_t?表示大小(字节或对象)或索引的所有内容是否始终size_t与合理预期的范围无关?是否有一些被广泛接受的size_t惯例用于完善的图书馆,我可以遵循?

c c++ conventions

16
推荐指数
1
解决办法
1051
查看次数

输出sizeof()运算符的数据类型

我使用的是Ubuntu 16.04.5和GCC 5.4.0版.

我在玩sizeof()操作员,写下面的代码:

#include <stdio.h>

int main(int argc, char *argv[]){

        long int mylint = 31331313131.1313;

        printf("size of long int is %d\n", sizeof(mylint));
        printf("size of long int is %d\n", sizeof(long int));

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用gcc -o ... ...命令编译并期待:

size of long int is 8
size of long int is 8
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

fl_double_lint.c: In function ‘main’:
fl_double_lint.c:11:9: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]

  printf("size of long …
Run Code Online (Sandbox Code Playgroud)

c ubuntu sizeof gcc5 ubuntu-16.04

10
推荐指数
1
解决办法
918
查看次数

size_t总是unsigned int

是否存在任何已size_t定义为其他内容的实现unsigned int?在我工作的每个系统下,它被定义为unsigned int,所以我只是好奇.

c++ size-t

4
推荐指数
2
解决办法
1748
查看次数

标签 统计

c ×3

c++ ×3

size-t ×2

conventions ×1

gcc5 ×1

sizeof ×1

ubuntu ×1

ubuntu-16.04 ×1