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

时间:2017-05-24 09:30:54

标签: c syntax post-increment

奇数数组以这种方式分组:first数字是第一组,下一个2数字组成第二组,下一个3数字组成第3组,等等。

组:

  1. 1
  2. 3 5
  3. 7 9 11
  4. 13 15 17 19
  5. 21 23 25 27 29
  6. 现在我想查找给定的数字是否是组中数字的总和,并找到该组的订单号。

    我写了下一段代码:

    #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;
    }
    

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

    while( x * x * x++ < k )
        ;
    

    该程序无效,我在codeblocks中收到了下一个警告:

    operation on 'x' may be undefined

    为什么不起作用?

1 个答案:

答案 0 :(得分:5)

x * x++的行为未定义。这是因为您基本上是在未经过排序的步骤中阅读和写入x;乘法不是C中的序列点

请勿在C中执行此操作。您的编译器会发出警告,提醒您这一点。其他编译器可能会吃你的猫。