被 K&R 练习 1.5.2 难住了
我目前正在尝试使用 K&R 来学习 C,但我完全被示例 1.5.2 难住了。由于某种原因,在我按 Ctrl-Z 后,它不是打印 nc
,而是打印 nc
乘以 2。我不知道是什么导致了这个问题(我完全按照书中的方式复制代码)。我使用的编译器是Visual Studio 2010。代码如下:
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%1d\n", nc);
}
I am currently trying to learn C by using the K&R, but I am completely stumped by example 1.5.2. For some reason, after I press Ctrl-Z, instead of printing nc
, it prints nc
multiplied by 2. I don't know what could be causing this problem (I copied the code exactly how it is in the book). The compiler I am using is Visual Studio 2010. Here is the code:
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%1d\n", nc);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
因为
enter
是一个按键。如果您的输入是:
它将输出:
Because
enter
is a keystroke.If your input is:
it would output:
不确定为什么会出现您所描述的行为,但这应该是 %ld 而不是 %1d
Not sure why you get the behaviour you describe but that should be %ld not %1d
无法重现您的错误。我添加了一些调试语句,
然后在 Windows 上使用
gcc
进行了尝试:然后使用 Visual Studio 2008:
Could not reproduce your error. I added some debugging statements,
And then tried it with
gcc
on Windows:And then with Visual Studio 2008: