for & getchar(20分)

  • 主题发起人 主题发起人 lps
  • 开始时间 开始时间
L

lps

Unregistered / Unconfirmed
GUEST, unregistred user!
for &
getchar
下面的程序在VC6.0中为何第二个循环到28的2显示后就暂停了?
百思不解!

#include <iostream.h>
#include <stdio.h>
int main()
{
for( int i = 0;
i <=100;
++ i )
cout << i << "/n";
// The loop index, i, cannot be declared in the
// for-init-statement here because it is still in scope.
for(i = 100;
i >= 0;
--i )
cout << i << "/n";
getchar();
return 0;
}
 
i没有定义,因为i是在第一个for中定义的,在第二个for中出了作用域。
应该先定义
int i;
for (i = 0;
i <=100;
++ i)
for i = 100;
i >= 0;
--i )
 
非也,只有在新版的C++中第二个i也要定义,如下:
现在的问题是[red]第二个循环到28的2显示后就暂停了[/red]
#include <iostream.h>
#include <stdio.h>
int main()
{
for( int i = 0;
i <=100;
++ i )
cout << i << "/n";
// The loop index, i, cannot be declared in the
// for-init-statement here because it is still in scope.
for(int i = 100;
i >= 0;
--i )
cout << i << "/n";
getchar();
return 0;
}
 
//提奇怪的
#include <iostream.h>
#include <stdio.h>
void main()
{
//char m = getchar();
真怪,放在上面没问题!
//cout << m << "/n";
int i;
for ( i = 0;
i <=100;
++ i)
cout << i << "/n";
for ( i = 100;
i >= 0;
--i)
cout << i << "/n";
getchar();
}
 
咳,讨厌!
 
>>咳,讨厌!
什么意思?
 
呵呵,因为这是C++讨厌的一个问题,C++编译文档写到“请不要使用
iostream.h,请使用iostream”,也就是说

#include <iostream.h>
改为
#include <iostream>
结尾不带.h代表是STL,当然就要用STL的讨厌的语法了。
因此如果你不需要使用C++编译器,可以
printf("%d/n",i);
这时int i必须先定义,这也是C和C++语法的异同点之一。
 
endl
template class<E, T>
basic_ostream<E, T>&amp;
endl(basic_ostream<E, T> os);
The manipulator calls os.put(os. widen('/n')), then
calls os.flush(). It returns os.
上述内容来自MSDN,可见endl还调用了flush(),强制输出缓冲中的数据。
这应该是正解了!
 
后退
顶部