Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 大小迭代的可变比例\u t_C_Types_Size T - Fatal编程技术网

C 大小迭代的可变比例\u t

C 大小迭代的可变比例\u t,c,types,size-t,C,Types,Size T,对于给定的大小\u t,迭代该大小的最佳数据类型是什么 void do_一些(尺寸t); 当我使用int时 void do\u some\u for(size\t const size){ 对于(int i=0;i

对于给定的
大小\u t
,迭代该大小的最佳数据类型是什么

void do_一些(尺寸t);
当我使用
int

void do\u some\u for(size\t const size){
对于(int i=0;i
一个善良的编译器这样警告我

....c:36:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < s; i++) {
                     ^
现在我的问题是什么是最好的(安全的)数据类型

我看到
stdint.h#SIZE_MAX
打印了这个

18446744073709551615 // at least 16 bits, i know.
这显然等于
2^63-1

我应该使用
无符号long-long-int
(C99)吗?或者有什么动态的方法可以做到这一点

我应该使用
无符号long-long-int

你不知道,是吗?您可能需要32位;您可能需要64位。 (在一台非常旧的机器上,您可能只需要16位。)

或者有什么动态的方法可以做到这一点

有!每个系统上都有一个特殊类型,具有特定于系统的定义,保证:

  • 未签名
  • 具有适当的大小,以存储可在该系统上操作的任何对象的大小
当然,这种类型的名称是
size\u t

所以你应该写

void do_some_for(size_t size) {
    for (size_t i = 0; i < size; i++) {
        ...
    }
}
void do_一些(大小){
对于(大小i=0;i
你应该很好

我应该使用
无符号long-long-int

你不知道,是吗?您可能需要32位;您可能需要64位。 (在一台非常旧的机器上,您可能只需要16位。)

或者有什么动态的方法可以做到这一点

有!每个系统上都有一个特殊类型,具有特定于系统的定义,保证:

  • 未签名
  • 具有适当的大小,以存储可在该系统上操作的任何对象的大小
当然,这种类型的名称是
size\u t

所以你应该写

void do_some_for(size_t size) {
    for (size_t i = 0; i < size; i++) {
        ...
    }
}
void do_一些(大小){
对于(大小i=0;i

你应该很好。

除非你有充分的理由,否则使用
size\u t
。如果要检查的项目数作为
size\u t
值给出,那么计数器也应该是
size\u t
,对于未签名的类型应采取通常的预防措施。除非您有充分的理由,否则请使用
size\u t
。如果要检查的项目数以
size\u t
值给出,则计数器也应为
size\u t
,对于未签名的类型应采取通常的预防措施。谢谢您的回答,伙计!当我进行反向迭代时,我介意吗?如果你的意思是,如果你要为(I=n-1;I>=0;I--)编写类似于
的东西,你需要担心吗?答案是,是的,你绝对需要担心!如果
i
是无符号的,则这是一个无限循环。(幸运的是,好的编译器往往会对这类事情发出警告。)谢谢你的回答,伙计!当我进行反向迭代时,我介意吗?如果你的意思是,如果你要为(I=n-1;I>=0;I--)编写类似于
的东西,你需要担心吗?答案是,是的,你绝对需要担心!如果
i
是无符号的,则这是一个无限循环。(幸运的是,好的编译器往往会对这类事情发出警告。)