JBR*_*RPG 1 c variable-assignment
当我在线阅读一些在线网站提供的代码时,我宁愿遇到一个我从未预料到的奇怪故障:变量突然改变其值而没有任何手动分配.
这是下面的代码:
int rc = fwrite(conn->db, sizeof(struct Database), 1, conn->file);
printf("rc is equal to %d\n", rc); // should print out 1
if (rc != 1) die("Failed to write Database.");
rc = fflush(conn->file);
printf("rc is equal to %d\n", rc); // should print out 0
if (rc == -1); die("Cannot flush database"); // error handling
// error comes up because rc suddenly changes to -1
Run Code Online (Sandbox Code Playgroud)
我不明白它是如何发生的,但是想知道为什么变量突然在C中突然发生变化.
代码来源:http: //c.learncodethehardway.org/book/learn-c-the-hard-waych18.html (Database_write下的堆栈和内存)
顺便说一下,我在Mac osx 10.6雪豹的终端上使用vim.
它不会更改为-1.它仍然是零.你的代码中有一个分号(;),你不应该有它.你应该有:
if (rc == -1) die("Cannot flush database");
Run Code Online (Sandbox Code Playgroud)