int main(void) {
int x = 0;
char* p = (char*) &x;
int k = 0;
while (x != -1) {
*p = -1;
p = p + 1;
k = k + 1;
}
printf("%d", k);
}
Run Code Online (Sandbox Code Playgroud)
我们已经使用char*p =&x将p设置为x的地址; 逻辑上,*p = -1应该在第一次迭代(k = 1)时替换x的值.实际上(或者当我在VS中运行代码时),需要4次迭代才能完成值赋值.为什么?并且因为*p = -1在每次迭代中执行,其他三个-1在哪里去?谢谢