免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4650 | 回复: 3
打印 上一主题 下一主题

------分析几个有用的C程序-------(1) [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-07 17:46 |只看该作者 |倒序浏览
1、这段代码的输出是什么?用gcc编译,cc可能会出错。

  1. #include       /* for printf definition       */


  2. main () {

  3.   printf ("audible alert (bell) BEL  \\a   %d\n" , '\a');
  4.   printf ("backspace            BS   \\b   %d\n" , '\b');
  5.   printf ("horizontal tab       HT   \\t   %d\n" , '\t');
  6.   printf ("newline              LF   \\n  %d\n"  , '\n');
  7.   printf ("vertical tab         VT   \\v  %d\n"  , '\v');
  8.   printf ("formfeed             FF   \\f  %d\n"  , '\f');
  9.   printf ("carriage return      CR   \\r  %d\n"  , '\r');
  10.   printf ("double quote         \"    \\\"  %d\n", '\"');
  11.   printf ("single quote         \'    \\\'  %d\n", '\'');
  12.   printf ("question mark        ?    \\?  %d\n"  , '\?');
  13.   printf ("backslash            \\    \\\\  %d\n", '\\');
  14. }                                    
复制代码



2、看看你的系统数据类型的大小和精度是多少?

  1. #include       /* for printf definition       */
  2. #include      /* for CHAR_MIN, CHAR_MAX, etc */
  3. #include       /* for FLT_DIG, DBL_DIG, etc   */

  4. main () {

  5.   printf ("char           %d bytes %d to %d \n",   sizeof(char          ), CHAR_MIN, CHAR_MAX  );
  6.   printf ("unsigned char  %d bytes %d to %d \n",   sizeof(unsigned char ), 0       , UCHAR_MAX );
  7.   printf ("short          %d bytes %hi to %hi \n", sizeof(short         ), SHRT_MIN, SHRT_MAX  );
  8.   printf ("unsigned short %d bytes %hu to %hu \n", sizeof(unsigned short), 0       , USHRT_MAX );
  9.   printf ("int            %d bytes %i to %i \n",   sizeof(int           ), INT_MIN , INT_MAX   );
  10.   printf ("unsigned int   %d bytes %u to %u \n",   sizeof(unsigned int  ), 0       , UINT_MAX  );
  11.   printf ("long           %d bytes %li to %li \n", sizeof(long          ), LONG_MIN, LONG_MAX  );
  12.   printf ("unsigned long  %d bytes %lu to %lu \n", sizeof(unsigned long ), 0       , ULONG_MAX );
  13.   printf ("float          %d bytes %e to %e \n",   sizeof(float         ), FLT_MIN , FLT_MAX   );
  14.   printf ("double         %d bytes %e to %e \n",   sizeof(double        ), DBL_MIN , DBL_MAX   );
  15.   printf ("precision of float   %d digits\n", FLT_DIG);
  16.   printf ("precision of double %d digits\n",  DBL_DIG);
  17. }                  
复制代码



3、下面这两个代码的输出结果不同,为什么?

  1. #include
  2. main () {
  3.   double r;
  4.   r = 1.0 + 0.2;
  5.   r = r - 1.2;
  6.   printf ("%22.16e\n", r);
  7. }


  8. #include
  9. main () {
  10.   double r;
  11.   r = 1.0F + 0.2F;
  12.   r = r - 1.2F;
  13.   printf ("%22.16e\n", r);
  14. }
复制代码




4、下面的代码说明了整型和float之间转化的的关系,用cc和gcc分别编译,结果不同,为什么?

  1. #include
  2. main () {
  3.   int i, j;
  4.   i =  1.99;
  5.   j = -1.99;
  6.   printf ("i = %d; j = %d\n", i, j);
  7. }

  8. #include
  9. main () {
  10.   unsigned int i;
  11.   float f;
  12.   i = 4294967295;       /* the largest unsigned int */
  13.   f = i;                /* convert it to a float    */
  14.   printf ("%u %20.13e %20.13e\n", i, f, f - i);
  15. }

  16. #include
  17. main () {
  18.   unsigned int i;
  19.   float f;
  20.   i = 4294967295;       /* the largest unsigned int */
  21.   f = i;                /* convert it to a float    */
  22.   printf ("%u %20.13e %20.13e\n", i, f, f - (float)i);
  23. }


复制代码

论坛徽章:
0
2 [报告]
发表于 2003-05-08 15:38 |只看该作者

------分析几个有用的C程序-------(1)

我记得float和double只是精度上的区别,虽然运算的时候float-->;double,但是还是这个数啊,555!斑竹给第二题答案吧。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2003-05-08 17:25 |只看该作者

------分析几个有用的C程序-------(1)

555!斑竹给第二题答案吧。

上面的几个代码都有特殊的含义,除了第一个,其它的在不同的机器和不同编译选项下结果是不一样的。建议大家拿到自己的机器上测试一下,想想为什么会是那样的结果。

论坛徽章:
0
4 [报告]
发表于 2003-05-08 18:13 |只看该作者

------分析几个有用的C程序-------(1)

第二题那几个宏都是系统中定义的
与系统相关

在c++ STL中的locale中好像也提供了相应的功能(忘记了)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP