永发信息网

c++ 关于无符号指针的问题

答案:3  悬赏:30  手机版
解决时间 2021-05-22 18:34

#include <iostream>
using namespace std;
void both(unsigned int *p,int i);
void kind(unsigned int *p1,int i1=0);
void main()
{
int count=0;
cin>>count;
unsigned int *p=new int[count];
both(p,count);

}

void both(unsigned int *p,int i)
{
for(int j=0;j<i;j++)
{
cin>>p[j];
if(p[j]<=0){break;}
}
kind(p,i);
}

void kind(unsigned int *p1,int i1)
{ int z=0;

for(int h=0;h<i1;h++)

{
if(p1[h]%2==0)
{
z=p1[h]+z;
}
}
cout<<z<<endl;
}

这段代码里面有一句报错了!

但不明白为什么错了!

另外就是我想搞明白无符号的整型变了不能够输入负值!那么在这个动态数组里

如果输入了负数会产生什么结果??

最佳答案
unsigned int *p=new int[count];
类型转换错误
高级语言如c++对类型都是很敏感的,不同类型的指针当然不能互转了

unsigned不是不能输入负值,你定义一个unsigned然后给它输入一个-1也没什么错
unsigned a = 0; cin >> a; cout << a;
只不过编译器和一些库函数对unsigned和int的解释不同
比如上面这个代码你输入-1,输出就会变成无符号整形的最大值
这是因为unsigned的最大值和int的-1在二进制表现上是相同的
只不过cout把a认为是一个unsigned,然后输出了unsigned的最大值
如果相应地你cout << (int&)a;,那么就将输出-1
一样的道理
全部回答

这句

unsigned int *p=new int[count];

改成

unsigned int *p=new unsigned int[count];

说的很对!长度都 不一样则么转?你准备强制转换?

这句

unsigned int *p=new int[count];

改成

unsigned int *p=new unsigned int[count];

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
09年秋天流行什么装?或者什么颜色的衣服?
劳动力人口指的是什么?
赞美吴菊萍的名言
盛冰批发部怎么去啊,有知道地址的么
我是农历1988年11月初10的,女,看我的爱情人
PSP内存卡不显内容只显示内存
吴谷丰登新世纪华联超市在哪里啊,我有事要去
哪个直播平台人多,哪个直播平台人最多 哪个直
我下的异型大战铁血战士安装进度条怎么不动啊
心里害怕的诗词,写虫的诗句有哪些
单反内存卡多大合适,单反相机用多大的内存卡
上海哪里有卖这个双肩包?
龙口山庄饭店地址在哪,我要去那里办事
新浪博客忘了登录名怎么办?
元素的质量比是怎么计算的?
推荐资讯
为什么总说南方人狡猾聪明,
领取护照还需要带户口本和身份证吗?
如何简单关机,最好是一个键
物理题 关于长度和时间的测量
头发怎么才能长得快点?我看了百度上的,试了
11月8号到11月18号是不是排卵期还是安全期
东莞寮步镇凫山长富工业区星益服装城的邮编
我要笑对人生的作文!800字的
请问韩国西装,风衣面料在哪里批发?
周杰伦是那个国家的人的哦?
工作一丝不苟的名言,告诉人们要有一丝不苟的
沈阳用哪个配货网好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?