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
循环中是完全独立的
仍然从0增加到4i
则具有从1到5的相应值。索引n[i]
仍在范围[0,4]内i
%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
循环中是完全独立的
仍然从0增加到4i
则具有从1到5的相应值。索引n[i]
仍在范围[0,4]内i
%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
用于大小