int main(){
int *p;
long n = 1;
while (p!=NULL)
{
n=n+1000000000;
p = (int *)malloc(sizeof(int)*n);
}
if(!p){
printf("%ld\n",n);
printf("hello");
}
return 1;
}
最后得到n为负值,是因为n达到了长整型能到达的最大值时,仍有内存空间可以分配吗?
但为什么把n=n+1000000000的0去掉一个之后就能得到n为正值
(都输出了hello)
初学数据结构,感谢大家
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已结题
为什么这样输出的n为负值呢?是溢出了吗
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
3条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
关注
long的范围是 -2147483648~2147483647,数据过大,只是显示会有问题,但是内存没有占用过大,因为一个long也就4字节
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容关注码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
沉舟千帆 2022-04-29 23:56谢谢您!所以是说,n=n+1000000000的时候,可能n变化的太快了,超过了long能显示的范围之后内存才占满;n=n+1的时候,变化慢一点,还没到long能显示的最大值,内存就满了。可以这样理解吗?
赞回复编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
回复按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2023-04-13 03:01回答 2 已采纳 在 C/C++ 中,char 类型是一个 8 位有符号整数类型,其取值范围为 -128 到 127。也就是说,char 类型的变量可以表示从 -128 到 127 的整数值。所以你输入的是 197 和
- 2022-03-08 14:53回答 2 已采纳 八位的补码是:0000 0000~1111 1111。写成十进制就是:0 ~ 255。其中的 0 ~ 127,是正数的补码。而 128~255,则是-128 ~-1 的补码。所能表示的范围是:-128
- 2021-12-16 05:04回答 3 已采纳 #include <stdio.h>void main(){ int score[40];/数组最大容量/ int i,j=0,k=0,sum,aver; for(i=0
- 2019-09-29 01:51我是管小亮的博客 python学习之路 - 从入门到精通到大师 文章目录[python学习之路 - 从入门...回顾Python基础1.8.数据入门1.8.1.内置的原子数据类型1.8.2.内置的集合数据类型 1.7.回顾Python基础 在本节中,我们将回顾 Python 编程语...
- 2022-11-08 16:20回答 1 已采纳 char等于-1就输出什么,前提是看你用什么格式输出,你用%d就输出-1,用%c就输出不可见字符(就是没法用可识别的字符来表现的字符)ascii大于128的就用unsigned char或者int来存
- 2022-03-14 12:07回答 1 已采纳 不行。因为各种路径的 步数并不一定相同。所有边权值加正数,只有在各种路径步数相同的情况下才可行。求带负权值边的单源最短路径可以用贝尔曼-福特算法。
- 2022-09-27 10:06回答 1 已采纳 修改如下,供参考: //采取递归方法 删除单链表中的元素 void deleteX(struct Link* p,int delnum) { struct Link* q = NULL;
- 2024-07-31 02:30摆烂牛杂的博客 线性表由n个相同属性的数据元素组成,可以为空表或表示为 ( A = (a_1, a_2, …, a_i, …, a_n) )。线性表的逻辑特征包括:有且仅...一般形式:线性表数据结构定义n0}其中,关系的定义, ai+1 >:ai , ai+1 必定相邻;
- 2021-09-14 15:21回答 2 已采纳 主要原因是在循环中对行数据删除以后结果没有保存,而在读取时是原来的数据框,当j值循环到后面时,只会删去最后读取的符合条件的那行。如果要实现题中要求,需要这样: from openpyxl import
- 2021-07-08 05:20回答 2 已采纳 printf的时候,用%f
- 2021-12-08 07:57回答 2 已采纳 29的阶乘用int型是不够的,long long都不够,用double吧 #include<stdio.h> int main(){ int x,i; double m=1; scanf(
- 2022-07-26 15:08Jy戒外的博客 AcWing算法学习笔记,学习使用,仅供参考,如有错误,欢迎探讨。
- 2023-04-01 11:21【数据结构-kruskal算法求最小生成树 实验报告】 本实验报告主要涉及图论中的两种经典算法:Kruskal算法和Dijkstra算法,它们主要用于寻找图的最小生成树和最短路径。 1. Kruskal算法 Kruskal算法是一种贪心策略,...
- 2022-12-23 14:47长安er的博客 数据结构算法设计 一、线性表 二.栈和队列 三、数组和广义表 四、树和二叉树 五、图 六、查找算法 七、排序算法
- 2024-06-08 13:27Gravtron的博客 } } //若输出的顶点数小于n,则输出“存在有向回路” if (count 总的事件复杂度:O(n+e) 对有向无环图利用深度优先搜索进行拓扑排序 DSF 用 DFS 遍历一个无环有向图,并在 DFS 算法退栈返回时打印相应的顶点,则输出的...
- 2024-10-31 18:28钺不言的博客 图是计算机科学中用来表示复杂结构信息的一种基本结构。本章我们会讨论一些通用的围表示法,以及一些频繁使用的图算法。本质上来说,一个图包含一个元素集合(也就是顶点),以及元素两两之间的关系(也就是边),由于应用...
- 2022-10-21 02:05尘 关的博客 数据结构--十大排序算法;
- 2022-05-01 12:39小白要努力sgy的博客 堆栈和队列,是两种相当典型的抽象数据类型,也是一种有特定进出规则的线性表;主要特性是,根据自身的规则按位置插入和删除数据; 一、堆栈stack 堆栈(stack):last in first out(LIFO)先进后出,入栈(压入...
- 2023-04-11 06:31殿下p的博客 } } (有关堆及二叉树的详细讲解请移步到此:数据结构:树与二叉树与堆) 堆排序的特点: 堆排序使用堆来选数,效率就高了很多。 时间复杂度:最好最坏平均都是O(N*logN) 空间复杂度:O(1) 稳定性:不稳定 六.冒泡...
- 2021-11-02 09:37李昂的的博客 1、将两个递增有序的链表合并为一个递增有序的链表,要求仍然使用原来的空间,表中不允许有原来的数据 算法思想: 两个结点比较,使用pc指向两个结点较小的链表,如果两个链表结点相等则删除b的结点,保留a的结点,...
- 没有解决我的问题, 去提问
问题事件
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司