学C第4天上(溢出、随机数)

一、溢出

1.short类型

数据使用必须在范围内,否则无符号产生溢出,有符号出错。

1      print("short极大值%d","short极小值",SHRT_MAX,SHRT_MIN);//32767,-32767
 2      print("unsigned short极大值%d","unsigned short极小值",USHRT_MAX,0);//65535,0
 3 
 4      unsigned short num1=65535+2;
 5      printf("%d",sizeof(num));//2个字节
 6      print("%d",num1);//num1=1,溢出
 7       
 8      short num2=32767+1;
 9      printf("%d",);//num2=-32768,出错

2.int类型

1).32位平台,%d能表示的范围就是int的范围,根据平台的不同,int的表示范围也不同,32位是4byte.

1     printf("%d,%d", INT_MAX, INT_MIN);//2147483647,-2147483648
2     //前两个数越界,后一个正常
3     printf("\n%d,%d,%u", INT_MAX + 1, INT_MIN - 1, INT_MAX + 1);//-2147483648,2147483647,2147483648
4     //UINT_MAX超过了%d所表示的范围
5     printf("\n%d,%d", UINT_MAX, 0);//-1,0  
6     //正常情况
7     printf("\n%u,%d", UINT_MAX, 0);//4294967295,0
8     //UINT_MAX超过了%u所表示的范围
9     printf("\n%u,%d", UINT_MAX + 1, 0);//0,0

3.float类型

1).为什么int和float都是分配了4个字节,而两者的取值范围却不一样

因为int采用的是普通计数法,而float是科学计数法,故两者存储的格式不一样,float型的二进制里面有一部分表示的是指数。为何要采取指数,因为float型中两个数之间的数的个数是无穷无尽的,所以不能用普通计数法一一对应。

2).所占字节数

1     printf("%d",sizeof(1.0));//8
2     printf("%d", sizeof(1.0f));//4
3     printf("%d", sizeof(1u));//4(无符号整形)

3).示例.计算三角形的周长与面积

1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<math.h>
 4 void main()
 5 {
 6     float a, b, c,s,p;
 7     scanf("%f%f%f",&a,&b,&c);
 8     p= (a + b + c) / 2;
 9     s = sqrt(p*(p-a)*(p-b)*(p-c));
10     printf("%f,%f", p, s);
11     system("pause");//不用getchar()是因为回车也被当成一个字符
12 }

4.使用printf函数注意事项

1).printf的本质:不管什么类型,都按照自己的方式转换为字符串

1     int num1=1;
2     printf("%d",num1);//1
3     printf("%f",num1);//0.000000

2).使用printf打印的时候必须要类型匹配,否则出错

1 printf("%d,%u",-1,-1);//-1,4294967295

2 printf("%x",-10);//fffffff6,无符号十六进制

3 printf("%o",-10);//37777777766,无符号八进制

二、随机数

1.rand()函数

1).rand函数是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。而使用同种子相同的数调用 rand()会导致相同的随机数序列被生成。
2).返回一个[0,RAND_MAX]间的随机整数。

如果程序被调用一次,则每次调用时产生的随机数相同。但是如果循环调用,产生的随机数不一样。

1 int num = rand();
2 printf("%d\n", num);

每次产生的随机数都是相同的(41).

1     for (size_t i = 0; i < 10; i++)
2     {
3         int num = rand();
4         printf("%d\n", num);
5     }

2).生成0~n的随机数 rand()%n

2.srand()函数

1).void srand(unsigned seed)参数seed是rand()的种子,用来初始化rand()的起始值。系统在调用rand()之前都会自动调用srand(),如果用户在rand()之前曾调用过srand()给参数seed指定了一个值,那么 rand()就会将seed的值作为产生伪随机数的初始值;而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始 值。如果给了一个定值,那么每次rand()产生的随机数序列都是一样的。

示例:

1     time_t time1;//定义时间类型的变量
2     srand((unsigned int)time(&time1));//随机数发生器,根据时间,time(&time1)函数获取时间赋值给time1
3     int num=rand();
4     printf("%d",num);

2).生成100~200的随机数方法: rand()%100+100

时间: 2024-10-07 01:34:26

学C第4天上(溢出、随机数)的相关文章

C++-随机数的产生

一.随机数 以前学C语言的时候感觉随机数没啥用的,现在想想是自己无知啦,在帮人做一个项目的时候发现随机数还是相当有用的,我们可以利用随机数来生成大量的测试数据. 有两种方法可以让你的程序每次运行结果不同: 1.让用户输入不同的数据(或者从文件中读取不同的数据):2.对用户输入的相同数据采取不同的处理方式,使其运行结果不同. 大多数情况下,第一种方法是非常好的,用户总是希望他们程序的结果是可预测的.比如当编写一个文本编辑器或者网页浏览器时,你会希望程序在用户每次输入一段文本或网址时执行同样的操作,

黑客之路

学习网络安全已经有很长时间了.关于这条路,在这里为新手朋友指明方向. 先说一下,什么是黑客?(这只是我个人的认识) 黑客(HACKER)在这个世界上已经很少有人能告诉我们什么是黑客了.在媒体的大肆渲染下,黑客这个称呼已经成为了一个异常神秘的称呼.在许多人看来,黑客就是那些非法入侵web服务器,黑掉人家的网站或者用着各种木马抓鸡的人,这些人在黑客界有一个称呼叫"脚本小子".他们在严格的黑客7层分级(FB赵总说的分级标准)中属于1级,他们的作用只是哗众取宠.(并非所有1级的黑客都是哗众取宠

text3

GitHub地址https://github.com/gaodejian/gaodejian/blob/master/firework 课题研究的目的和意义 java编程语言在编程方面的具体应用,以及使用面向对象方法,对小应用程序进行需求分析.概要设计.详细设计,最后使用Java编程实现的全过程. 在编程我们使用的java语言,是目前比较流行的编程语言.在当今这个的时代,java语言在编程方面的优势使得编程有了更好的选择.Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的

结对实验报告

课题研究的目的和意义 java编程语言在编程方面的具体应用,以及使用面向对象方法,对小应用程序进行需求分析.概要设计.详细设计,最后使用Java编程实现的全过程. 在编程我们使用的java语言,是目前比较流行的编程语言.在当今这个的时代,java语言在编程方面的优势使得编程有了更好的选择.Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用. 可行性论证 本例知识点 一句话讲解 新学知识 使用Graphics类 绘制烟花 使用Thread类 管理线程 已学知识 使用Ma

江南Style是怎么把youtobe的计数器弄坏的

今天的整点儿新闻主要是想让大家学点东西用来泡妹子.想看段子和吐槽的现在可以退出了!我们明天整点儿新闻再见~! 留下来的朋友们,小手放在膝盖上准备听讲. PSY 的<江南 Style>MV 这两天在 YouTube 上的点击量超过了 2,147,483,647,逼着谷歌升级了计数服务-- 谷歌说我们从来没有想到有个视频的观看量会超过 2,147,483,647,直到 PSY 的<江南 Style>出现-- 为什么超过这个看起来毫无规律的数会让 YouTube 的计数器出现问题呢?这个

pyton笔记

1.安装python一定要配置环境变量,python分为2.x,3.x,一般用2.x 2.对python而言可以使用pycharm2.7作为图形化界面工具 3.使用input()函数,注意在键盘输入的时候字符串一定要带""号返回可以是数字或者字符串,#字符串带引号,否则会报错print "Who do you think I am?"input()print "Oh,yes!"----------------Who do you think I

应该学的沟通术

应该学的沟通术 第1节:前言成败说出来,机遇听出来 古代有一位国王,一天晚上做了一个梦,梦见自己满嘴的牙都掉了.于是,他就找了两位解梦的人.国王问他们:“为什么我会梦见自己满口的牙全掉了呢?”第一个解梦的人就说:“皇上,梦的意思是,在你所有的亲属都死去以后,你才能死,一个都不剩.”皇上一听,龙颜大怒,杖打了他一百大棍.第二个解梦人说:“至高无上的皇上,梦的意思是,您将是您所有亲属当中最长寿的一位呀!”皇上听了很高兴,便拿出了一百枚金币,赏给了第二位解梦的人. 同样的事情,同样的内容,为什么一个会

从零开始学ios开发(十一):Tab Bars和Pickers

不好意思各位,本人休息了一个礼拜,所以这次的进度延后了,而且这次的学习的内容比较多,时间用的也比较长,文章发布的时间间隔有些长了,望各位谅解,下面继续我们的ios之旅. 这次我们主要学习的内容有2个,一个是Tab Bar,如下图 很熟悉的界面(iphone中的phone),另一个Picker,如下图 在正是开始学习项目之前,先首先简单介绍一下这次的例子的一个结构,当然一个root controller肯定是有的,用来控制其他subController的切换,在root controller中会放

随机数发生器

浅谈随机数发生器 目录(?)[-] 一真随机数发生器 基于电路的TRNG 基于其他物理源的TRNG 其他物理信息TRNG 二伪随机数发生器 取中法 i平方取中法 ii常数取中法 iii乘法取中法 同余法 移位法 梅森旋转算法 今 天在微博上到一篇如何使用随机数的文章,让我回忆起刚上大一时学C语言时,书后有道调用rand()函数的练习题,当时觉得好神奇,想知道它是怎么实现 的,大二时候学Java又遇到了random()函数,恰巧当时上机课我有机会问老师,遗憾的是老师只是告诉我那是伪随机数,课后查查