Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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
Arrays 使用size\u t运算符的数组的递增值 在以下代码中:_Arrays_C_Pre Increment_Size T - Fatal编程技术网

Arrays 使用size\u t运算符的数组的递增值 在以下代码中:

Arrays 使用size\u t运算符的数组的递增值 在以下代码中:,arrays,c,pre-increment,size-t,Arrays,C,Pre Increment,Size T,我不明白的是,预先递增的I如何给出从0到4的值 我认为应该是1比4,因为它不会通过条件 这背后的原因是什么 我不明白的是我是如何被预先递增的 它不是,i和n[i]在printf循环中是完全独立的 i仍然从0增加到4 n[i]则具有从1到5的相应值。索引i仍在范围[0,4]内 顺便说一下,您应该使用%zu来表示大小\u t类型 for (size_t i = 0; i < 5; ++i) { printf("%7zu%13d\n", i, n[i]); }

我不明白的是,预先递增的
I
如何给出从0到4的值

我认为应该是1比4,因为它不会通过条件

这背后的原因是什么

我不明白的是我是如何被预先递增的

它不是,
i
n[i]
printf
循环中是完全独立的

  • i
    仍然从0增加到4
  • n[i]
    则具有从1到5的相应值。索引
    i
    仍在范围[0,4]内
顺便说一下,您应该使用
%zu
来表示
大小\u t
类型

for (size_t i = 0; i < 5; ++i)
{
    printf("%7zu%13d\n", i, n[i]);
}
(大小i=0;i<5;++i)的

{
printf(“%7zu%13d\n”,i,n[i]);
}
我不明白的是我是如何被预先递增的

它不是,
i
n[i]
printf
循环中是完全独立的

  • i
    仍然从0增加到4
  • n[i]
    则具有从1到5的相应值。索引
    i
    仍在范围[0,4]内
顺便说一下,您应该使用
%zu
来表示
大小\u t
类型

for (size_t i = 0; i < 5; ++i)
{
    printf("%7zu%13d\n", i, n[i]);
}
(大小i=0;i<5;++i)的

{
printf(“%7zu%13d\n”,i,n[i]);
}

计数器
i
仅在
++i内预先递增。这是一个完整的语句,在该语句中,增量前后是无关的。
i
的可观察行为与增量无关,因为所有输出都在循环的单独主体中完成

正如邪恶之羊在评论中提到的:

for循环语句的第三部分(迭代表达式)总是在迭代完成后执行


计数器
i
仅在
++i内预先递增。这是一个完整的语句,在该语句中,增量前后是无关的。
i
的可观察行为与增量无关,因为所有输出都在循环的单独主体中完成

正如邪恶之羊在评论中提到的:

for循环语句的第三部分(迭代表达式)总是在迭代完成后执行


为了进一步阐明评论和其他答案的观点

for循环语句的第三部分(迭代表达式)总是在迭代完成后执行

手动展开该循环将是

#include <stdio.h>
#include <stddef.h>

void main ()
{
    int n[5] = {1,2,3,4,5};
    
    printf("%s%13s\n","element","value");
    size_t i = 0;
    printf("%7d%13u\n", i, n[i]);
    ++i;
    printf("%7d%13u\n", i, n[i]);
    ++i;
    printf("%7d%13u\n", i, n[i]);
    ++i;
    printf("%7d%13u\n", i, n[i]);
    ++i;
    printf("%7d%13u\n", i, n[i]);
    ++i;
}
#包括
#包括
空干管()
{
int n[5]={1,2,3,4,5};
printf(“%s%13s\n”、“元素”、“值”);
尺寸i=0;
printf(“%7d%13u\n”,i,n[i]);
++一,;
printf(“%7d%13u\n”,i,n[i]);
++一,;
printf(“%7d%13u\n”,i,n[i]);
++一,;
printf(“%7d%13u\n”,i,n[i]);
++一,;
printf(“%7d%13u\n”,i,n[i]);
++一,;
}

进一步阐明评论和其他答案的观点

for循环语句的第三部分(迭代表达式)总是在迭代完成后执行

手动展开该循环将是

#include <stdio.h>
#include <stddef.h>

void main ()
{
    int n[5] = {1,2,3,4,5};
    
    printf("%s%13s\n","element","value");
    size_t i = 0;
    printf("%7d%13u\n", i, n[i]);
    ++i;
    printf("%7d%13u\n", i, n[i]);
    ++i;
    printf("%7d%13u\n", i, n[i]);
    ++i;
    printf("%7d%13u\n", i, n[i]);
    ++i;
    printf("%7d%13u\n", i, n[i]);
    ++i;
}
#包括
#包括
空干管()
{
int n[5]={1,2,3,4,5};
printf(“%s%13s\n”、“元素”、“值”);
尺寸i=0;
printf(“%7d%13u\n”,i,n[i]);
++一,;
printf(“%7d%13u\n”,i,n[i]);
++一,;
printf(“%7d%13u\n”,i,n[i]);
++一,;
printf(“%7d%13u\n”,i,n[i]);
++一,;
printf(“%7d%13u\n”,i,n[i]);
++一,;
}

for
循环语句(迭代表达式)的
第三部分总是在迭代结束后执行,它应该是
int main(void)
才正确,通常返回0
@unholyseep我在回答的最后一部分使用了你的评论,当时我在打字时意识到,我几乎要说同样的话了。希望您不介意。
for
循环语句(迭代表达式)的第三部分总是在迭代结束后执行,它应该是
int main(void)
才正确,通常返回0
@unholyseep我在回答的最后一部分使用了你的评论,当时我在打字时意识到,我几乎要说同样的话了。希望你不介意。请修正我对邪恶羊评论的错误引用。否则很好的观想,和我一起做一个很好的回答。请修复我对邪恶羊评论的错误引用(分解标记)。另外还有很好的可视化效果,与我的答案很好。关于
%zu
,这段代码片段来自《C如何编程》一书,他们使用了
%u
,你能解释一下为什么要使用
%zu
来代替吗?
%u
表示无符号类型,
%zu
表示
大小,这段代码片段来自《C如何编程》一书,他们使用了
%u
,你能解释一下为什么要用
%zu
来代替吗?
%u
用于无符号类型,
%zu
用于
大小