|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 理想小青年 于 2018-5-16 11:04 编辑
最近写一段代码 因为%f的问题死循环(一开始以为函数,调试后是printf语句)
虽然找到原因已改正 本质问题没清楚 float 与 double这两个类型很清楚 单精度与双精度 大小溢出范围 %f的体用谁来讲讲
白话文描述的 比如 %5.2f,%.2f,%-10f等等
如果不当的输入(%f)为什么造成死循环??单凭%f就可以死循环- - 一直没搞懂?
代码如下
对指针赋值
p1,p2结构体指针变量
- while( p1->num != 0 )
- {
- n++;//每次n+1,作为新增节点条件
- if( n == 1 )
- {
- head = p1; //头指针指向链表头部
- }
- else
- {
- p2->next = p1;
- }
- p2 = p1;//head,p1,p2指向同一地址
- p1 = (struct student *)malloc(LSN);//p1这时候指向新节点了
- printf("Please input num of valuse:\n");
- scanf("%d",&p1->num);
- printf("Please input score of valuse:\n");
- scanf("%f",&p1->score);
-
- printf("num = %d\n",p1->num);
- printf("score = %f\n",p1->score);
- }
复制代码
本帖最后由 BFSDT 于 2018-5-16 11:32 编辑
你P1应该是LSN结构类型吧,在结构里面你对num和score使用的应该是指针而非基本数据吧,所以你给P1分配的空间只是num指针和score指针占用的大小的空间,这两个指针指向的地方你并没有分配,直接使用当然出问题了,不止是score,num也会出问题,只是你运气比较好而已
|
|