gpt4 book ai didi

c - 为什么声明 Clock_t 类型整数会改变我的 C 程序?

转载 作者:行者123 更新时间:2023-11-30 20:46:04 26 4
gpt4 key购买 nike

我实际上能够找出我的程序出了什么问题。

我可以通过添加如下行来破坏程序:

clock_t a_clock;

我给这个变量命名什么并不重要,重要的是它是clock_t类型,并且我声明了它。

我不一定要给它分配任何东西,甚至不需要尝试为我的程序计时。

这是整个程序的粘贴箱。您可以尝试自己编译并运行该程序。如果您取出“clock_t a_clock”行,它将以某种合理的准确度计算 PI:

http://pastebin.com/1jdyiKnR

这是我的程序输出的 PI 计算错误:

Here is my_init 3533980296
Skipped first 100 results
Calculating PI from random numbers
total_count 1610725872 c_count 78541369
x 0.071707 y -0.055589
Guess for PI = 0.195046 with 100000000 iterations

最佳答案

编译它:

$ gcc -O3 -std=c99 -Wall -lm test.c

test.c:59:9: warning: ‘total_count’ is used uninitialized in this function [-Wuninitialized]
int total_count, c_count = 0;

(以及其他一些关于未使用代码的无害警告)

也就是说,您有 total_count 未初始化,只需将其设置为 0 即可按预期工作:

 int total_count = 0, c_count = 0;

请记住,使用未初始化的变量是未定义的行为。事实上,通过声明附加变量来改变结果只是偶然的。

关于c - 为什么声明 Clock_t 类型整数会改变我的 C 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28843489/

26 4 0
文章推荐: c# - 无法从 Windows 窗体应用程序中的 app.config 连接到本地 SQL 数据库
文章推荐: c# - 在等待期间保持不变的 CurrentManagedThreadId 的替代方案?
文章推荐: c# - 将 List 转换为未知类型