【问题标题】:post increment operator running a for loop into infinite loop后增量运算符将 for 循环运行到无限循环
【发布时间】:2017-06-20 00:04:15
【问题描述】:
int i;
for(i=0; i<10; )
{
   i=i++;
   printf("Hello\n");
}

以下代码运行到无限循环。谁能帮我理解为什么?

【问题讨论】:

    标签: loops post-increment


    【解决方案1】:

    它是一个无限循环,因为 i = i++ 的工作原理如下。 (假设 i = 1)
    1) 'i' 加 1。(所以 i = 2)
    2) i++ 的值,即递增前的值分配给“i”。 (所以 i = 1)

    所以,'i' 的值不会改变,条件 'i

    【讨论】:

    • 但是因为它是后增量运算符,所以首先'i'应该被分配给1。然后'i'应该被增加为2。不是吗?
    • @Viswa Sairaman :增量运算符比赋值运算符具有更多的优先级。所以如果 'i' 为 1,则先进行增量,这意味着 'i' 变为 2,'i++' 返回 1,将其分配给 'i',使其为 1。
    猜你喜欢
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2013-02-20
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    相关资源
    最近更新 更多