后增量用于while循环中的乘法

Tim*_*tei 0 c syntax post-increment

奇数数组以这种方式分组:first数字是第一组,下一个2数字形成第二组,下一个3数字形成第三组,依此类推.

团体:

  1. 1
  2. 3 5
  3. 7 9 11
  4. 13 15 17 19
  5. 21 23 25 27 29

现在我想查找给定数字是否是组中数字的总和并找到该组的订单号.

我写了下一个代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int k;
    scanf("%d", &k);

    int x = 1;
    while( x * x * x < k )
        x++;

    if( x * x * x != k )
        x = 0;

    printf("%d", x);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试将while循环更改为下一个循环:

while( x * x * x++ < k )
    ;
Run Code Online (Sandbox Code Playgroud)

该程序无法运行,我收到了下一个警告codeblocks:

operation on 'x' may be undefined

它为什么不起作用?

Bat*_*eba 5

行为x * x++未定义的.这是因为你基本上是读取和写入到x未测序的步骤; 乘法不是C中的序列点.

不要在C中执行此操作.您的编译器会出于常见的礼貌警告您.其他编译器可能会吃你的猫.