首页 > 其他 > 详细

C Primer Plus 第3章 数据和C 编程练习

时间:2016-02-03 19:11:55      阅读:153      评论:0      收藏:0      [点我收藏+]

   1、

/* 整数上溢 */
#include <stdio.h>
int main(void)
{
    int i = 2147483647;
    unsigned int j = 4294967295;

    /*
        无符号整数j像一个汽车里程指示表(形容的太好了,可参考《计算机科学导论》第3章 数据存储,有图),
        当达到最大值时,它将溢出到起始点。整数i也是同样。它们的主要区别是unsigned int变量j的起始点是0(正像里程
        指示表那样),而int变量i的起始点则是-2147483648。——参考《C Primer Plus》
    */
    printf("%d %d %d\n", i, i+1, i+2);
    printf("%u %u %u\n", j, j+1, j+2);
    return 0;
}

   浮点数上溢和浮点数下溢,于浮点数,以目前的知识最终是无法深究的,故留待以后探索。只能借《C Primer Plus》之意:

   当计算结果是一个大得不能表达的数时,会发生上溢。现在C语言要求为这样的数赋予一个代表无穷大的特殊值,以inf或infinity示之。

   用对浮点值可用的全部精度进行表示的最小数字(它具有最小的指数,并且仍具有可以由全部可用位进行表示的最小的尾数值),若此数除以2,通常这个操作将使指数部分减小,但是指数已经达到了最小值,所以计算机只好将尾数部分达到位进行右移,空出首位二进制位,并丢弃最后一位二进制位。此过程称为下溢。(举例说之:以十进制为例,把一个包含4位有效数字的数0.1234E-10除以10,将得到结果0.0123E-10,但是损失了1位有效数字)。

/* 浮点数上溢与下溢 */
#include <stdio.h>
int main(void)
{
    float toobig = 3.4e38 * 100.0f;
    float toosmall = 0.1234e-2 / 10;

    printf("%e\n", toobig);    // 输出为inf
    printf("%f\n", toosmall);  // 损失1位有效数字
    return 0;
}

    2、  

#include <stdio.h>
int main(void)
{
    int ch;
    printf("请输入一个ASCII码值: ");
    scanf("%d", &ch);
    printf("%d相应的字符为: %c", ch, ch);
    return 0;
}

   3、

#include <stdio.h>
int main(void)
{
    printf("\aStartled by the sudden sound, Sally shouted, ");
    printf("\"By the Great Pumpkin, what was that! \"\n");
    return 0;
}

   4、

#include <stdio.h>
int main(void)
{
    float input;
    printf("请输入一个浮点数: ");
    scanf("%f", &input);
    printf("The input is %f or %e.", input, input);
    return 0;
}

 

   

 

C Primer Plus 第3章 数据和C 编程练习

原文:http://www.cnblogs.com/yerenyuan/p/5180359.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!