2016-09-27 55 views
-1

我是C编程新手。我写了一个程序,当通过键盘输入'a'时,我得到输出0 1。根据我所知道的for循环,如果条件变为false,它不应该执行主体的语句。所以输入'a'时输出应该是0从c程序得到错误的输出

#include<stdio.h> 
main() 
{ int c; 

    long nc=0; 
    for(nc=0;c=getchar()!=EOF;++nc) 
    { 
     printf("%ld \n",nc); 
    } 
} 

回答

3

您输入a然后<return>,所以2个字符可用于输入,0为第一和1第二写入。一切正确。

--EXPLANATION REQUESTED BY OP--

开始与nc等于0,以getchar()第一呼叫读取anc等于0,那么0被印刷,nc递增所以现在等于1;然后getchar()秒调用读取newlinenc等于1,则1打印,nc递增所以现在等于2.

+0

感谢您的答复,先生请说明内部程序的工作循环 –