C编程,循环困难

标签 c loops

我目前正在处理一个问题,这很烦人。这是一个循环,我知道该怎么做,但试图理解 - 为什么 - 第二种情况不起作用。

第一部分很好。

int n;
int trianglenumber;
trianglenumber = 0;
for (n = 1; n <= 200; n++)
    trianglenumber = trianglenumber + n;
printf("%I,", trianglenumber");

输出为20100

int n;
int trianglenumber;
trianglenumber = 0;
int result = 0;
for (n = 1; n <= 200; n++)
    result = trianglenumber + n;
printf("%I,", trianglenumber"); 

程序以我不理解的0 的解决方案响应。为什么需要使用两次trianglenumber,然后将其添加到n?为什么你不能像我对结果所做的那样设置任何变量来取代 trianglenumber 的位置并得到相同的答案?非常感激。只是想弄清楚这一点。我想这很基本,但我没有看到。

最佳答案

在第二种情况下,trianglenumber + n; 不递增 trianglenumber。因此,在循环的每次迭代中,您只是将 n 的值放入 result 中。

最后,您最终打印了 trianglenumber,它仍处于第一个分配值 0。这证明了您获得的输出。

也就是说,%I 不是标准的转换说明符,您应该使用 %i。使用无效的转换说明符调用 undefined behavior .

关于C编程,循环困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41631172/

相关文章:

python - python浮点值和c浮点值有什么区别?

c - 是否有 GCC 编译器/链接器选项来更改 main 的名称?

loops - 在 lisp 中求和斐波那契数

python - 如何使用 python 在 {} 中循环字典

只要输入有效就继续运行程序

swift - 如何在有顺序的循环中使用DispatchGroup?

c - 使用 "-"启动文件并且不与标志冲突

C 根据优化级别给出不同的输出(新示例)

c - 如何统计while循环执行的次数

loops - 在 Mathematica : multiple outputs 中循环