CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

在C++编程思想一书中有一个程序我看不懂?请高手指点。

楼主bleempan(跟我青梅竹马的原来是我的电脑...)2001-07-25 23:33:00 在 C/C++ / C语言 提问

程序可以通过编译,可没有输出。应该怎样改才行。  
   
  #include   <fstream.h>  
  #define   D(a)   T<<#a<<endl;   a         //这句是什么意思?我看不懂。特别是那个#a。  
  #include   <conio.h>            
   
   
  ofstream   T("format.out");  
   
  void   main()  
  {  
  D(int   i=47;)  
  D(float   f=2300114.414159;)  
  char   *s="Is   there   any   more?";  
   
  D(T.setf(ios::unitbuf);)  
  D(T.setf(ios::stdio);)  
   
  D(T.setf(ios::showbase);)  
  D(T.setf(ios::uppercase);)  
  D(T.setf(ios::showpos);)  
  D(T<<i<<endl;)   //Default   to   de  
  D(T.setf(ios::hex,ios::basefield);)  
  D(T<<i<<endl;)  
  D(T.unsetf(ios::uppercase);)  
  D(T.setf(ios::dec,ios::basefield);)  
  D(T.setf(ios::left,ios::adjustfield);)  
  D(T.fill('0');)  
  D(T<<"fill   char:   "<<T.fill()<<endl;)  
  D(T.width(10);)  
  T<<i<<endl;  
  D(T.setf(ios::right,ios::adjustfield);)  
  D(T.width(10);)  
  T<<i<<endl;  
  D(T.setf(ios::internal,ios::adjustfield);)  
  D(T.width(10);)  
  T<<i<<endl;  
  D(T<<i<<endl;)     //without   width(10)  
   
  D(T.unsetf(ios::showpos);)  
  D(T.setf(ios::showpoint);)  
  D(T<<"prec="<<T.precision()<<endl;)  
  D(T.setf(ios::scientific,ios::floatfield);)  
  D(T<<endl<<f<<endl;)  
  D(T.setf(ios::fixed,ios::floatfield);)  
  D(T<<f<<endl;)  
  D(T.setf(ios::fixed,ios::floatfield);)  
  D(T<<f<<endl;)  
  D(T.setf(0,ios::floatfield);)     //automatic  
  D(T<<f<<endl;)  
  D(T.precision(20);)  
  D(T<<"prec   ="<<T.precision()<<endl;)  
  D(T<<endl<<f<<endl;)  
  D(T.setf(ios::scientific,ios::floatfield);)  
  D(T<<endl<<f<<endl;)  
  D(T.setf(ios::fixed,ios::floatfield);)  
  D(T<<f<<endl;)  
  D(T.setf(0,ios::floatfield);)  
  D(T<<f<<endl;)  
   
  D(T.width(10);)  
  T<<s<<endl;  
  D(T.width(40);)  
  T<<s<<endl;  
  D(T.setf(ios::left,ios::adjustfield);)  
  D(T.width(40);)  
  T<<s<<endl;  
   
  D(T.unsetf(ios::showpoint);)  
  D(T.unsetf(ios::unitbuf);)  
  D(T.unsetf(ios::stdio);)  
  }  
   
  问题点数:50、回复次数:6Top

1 楼SCUM(人渣)回复于 2001-07-25 23:41:03 得分 30

解释性的输出信息而已Top

2 楼MSVCer(家宝)回复于 2001-07-26 02:34:31 得分 20

#define   D(a)   T<<#a<<endl;   a  
  该句确实如SCUM(人渣)所言,是一个宏定义,但其中对'#"使用了一种特殊的用法  
  '#'号一般用在一个宏定义的开头处,以使预处理程序处理该句,若这个符号用在一个有参宏定义的中间,则其后的宏参数被做为一个常量字符串对待,'#'的这种用法只能是“有参”的宏定义,不能用在其它地方  
  此处用第一个宏输出D(int   i=47;)做例,宏扩展后形式如下:  
  T<<"int   i=47"<<endl;   int   i=47;  
  此宏即做了输出,又做了定义Top

3 楼z_sky()回复于 2001-07-26 09:31:32 得分 0

MSVCer(家宝)说的详细、准确,就是这样。   :-)Top

4 楼supershot(笨瓜)回复于 2001-07-26 09:53:23 得分 0

请问MSVCer(家宝)   
  偶是初学者,经常看到endl出现在程序尾部,请问是什么意思???Top

5 楼supershot(笨瓜)回复于 2001-07-26 10:48:27 得分 0

upTop

6 楼chenlee()回复于 2001-07-26 11:41:34 得分 0

end   line,换行符Top

相关问题

  • 请问如何学写软件,编程序?请指点!!!!
  • 一个汇编程序,不知为何错,请指点
  • 一个小汇编程序,望指点,谢谢。急!
  • 我想学多点编程序,现在有学C语言,请前辈们指点我应当学什么,一定给分。
  • Delphi程序转成C#程序的问题,请达人指点!
  • 一C++程序,不是很懂,请C++高手指点...
  • C程序和汇编程序混合编译问题
  • 如何把汇编程序转化为C程序
  • 郁闷中,学习编程Delphi7和C#,请高手指点迷津
  • 请指点:哪儿有Visual C++ 例程源代码程序?

关键词

  • setf
  • 程序
  • ios

得分解答快速导航

  • 帖主:bleempan
  • SCUM
  • MSVCer

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo