源码:
#include <stdio.h>
void Lock ( unsigned long long n ) {
printf ( "第%lld次调用\r", n );
Lock ( n + 1 ); }
int main ( void ) {
unsigned long long N = 0;
Lock ( N );
return 0; }
运行结果(前三次):
如图,连续执行三次上述代码后发现得到3221225725返回值时程序执行Lock(n)的次数不一样,执行时间和消耗的cpu和内存资源也不一样
继续执行:
序号 | 最后打印的N值 | 执行用时/s | cpu time /ms | mem /KB |
---|---|---|---|---|
#01 | 43144 | 25.43 | 390.6 | 5168 |
#02 | 43139 | 24.24 | 421.9 | 5164 |
#03 | 43157 | 24.95 | 687.5 | 5164 |
#04 | 43146 | 23.11 | 187.5 | 5164 |
#05 | 43141 | 22.92 | 0 | 5168 |
#06 | 43141 | 25.03 | 1156 | 5160 |
#07 | 43156 | 24.58 | 671.9 | 5164 |
#08 | 43153 | 23.08 | 453.1 | 5164 |
#09 | 43165 | 22.62 | 0 | 5164 |
#10 | 43153 | 24.56 | 359.4 | 5164 |
也就是说程序的运行是不确定的?还是说这是未定义行为?
IDE: RedPanda-C++
编译器: MinGW-w64 GCC 11.4.0 64-bit Debug
系统: Windows 11 家庭版