奇数数组以这种方式分组:first
数字是第一组,下一个2
数字组成第二组,下一个3
数字组成第3组,等等。
组:
现在我想查找给定的数字是否是组中数字的总和,并找到该组的订单号。
我写了下一段代码:
#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
为什么不起作用?
答案 0 :(得分:5)
x * x++
的行为未定义。这是因为您基本上是在未经过排序的步骤中阅读和写入x
;乘法不是C中的序列点。
请勿在C中执行此操作。您的编译器会发出警告,提醒您这一点。其他编译器可能会吃你的猫。