c语言二维数组赋值赋值后输出的数据不对,

"c语言给整个数组赋值"的糗事
11173 好笑
15446 好笑
你可能感兴趣:
糗事百科为大家收集了很多的c语言给整个数组赋值的糗事,各种关于c语言给整个数组赋值的爆笑经历、尴尬时刻和开心视频,想持续关注c语言给整个数组赋值的糗事就收藏本页吧.
扫码下载糗事百科app为什么我给数组赋值,输入的是数字,输出的是符号??
代码附上【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:557,659贴子:
为什么我给数组赋值,输入的是数字,输出的是符号??
代码附上收藏
#include&iostream&#include&stdio.h&const int Maxsize=20;class Node{public:Node();Node(char a[],int n);~Node();void Getlength();void Add(int i,int x);void Change(int i);void Check(int i);void Checknumber(int x);void Print();private:char data[Maxsize];};Node::Node(){length=0;}Node::Node(char a[],int n){for(int i=0;i&n;i++){data [i]=a[i];}length=n;}Node::~Node(){ length=0;}void Node::Check(int i){cout&&data[i];}void Node::Checknumber(int x){for(int i=0;i&i++){if(data[i]==x)cout&&&该元素在第&&&i+1&&&个位置\n&;}}void Node::Add(int i,int x){if(i&0||i&length)cout&&&输入错误!!!\n&;else for(j=j&i;j--){data[j+1]=data[j];}length++;data[i]=x;}void Node::Change(int i){if(i&0||i&length)cout&&&输入错误!!!\n&;elsefor(int n=n&i;n--){data[n-1]=data[n];}length--;}void Node::Getlength(){cout&&&表长为:&&&length&&}void Node::Print(){cout&&&当前表值:&;for(int i=0;i&i++){cout&&data[i]&&&
&;}cout&&endl&&}void main(){char a[20];cout&&&输入表长:\n&;cin&&n;while(n&Maxsize){cout&&&输入错误!!! 请输入0-20的数字\n&;cin&&n;}cout&&&输入表值:\n&;for(int i=0;i&n;i++){scanf(&%d&,&a[i]);}Node m(a,n);m.Getlength();m.Print();cout&&&输入查找位置\n&;cin&&o;m.Check(o-1);m.Print();cout&&&输入查找值\n&;cin&&b;m.Checknumber(b);m.Print();cout&&&输入删除位置\n&;cin&&c;m.Change(c-1);m.Print();int d,e;cout&&&输入添加位置,值\n&;cin&&d;cin&&e;m.Add(d-1,e);m.Print();}
找c语言?来博为峰学C语言开发,C语言开发课程,免费训练营火热开启中!找c语言?来这里学C语言开发,抢!!!C语言开发课程试听名额,总监名师主讲.
这是运行结果,
为什么我输入的1 2 3 4 5
出来的是符号,
而查找时 输入2 却能查找到位置,
而且删除时
为什么会使后面的变为问号
求大神帮忙看看
其他问题都已解决
就是输入数字显示符号结局不了
楼主,我也是同样问题。。现在找到解决方法了吗??求分享
登录百度帐号推荐应用初学,c语言,用的vc,赋值y为十位数以上,打印,出来的数字出错。求帮忙看看是哪里的错。。_百度知道
初学,c语言,用的vc,赋值y为十位数以上,打印,出来的数字出错。求帮忙看看是哪里的错。。
如果是十位数以内,就是正确。。
我有更好的答案
符号位为0表示非负数,符号位为1表示负数。在给y赋值后(丢失超过32位的高位);return #include&&&nbsp,y =&1110 00 01 10000,最高位为1,因此表示一个负数.h&int&&nbsp:补码表示的最高位为负权。在计算机的内存中一个数是以补码形式表示的。按照补码的定义把这个数展开有;&- ..:  -1*2^31+1*2^30+1*2^29+1*2^23+1*2^22+1*2^21;stdio..;&nbsp!!;&&;&&&&printf(&quot..;y;,&y)、黑体字部分是超出的部分..+1*2^3 = &%lld\n&  注意;main(){&&&&long&long&int&nbsp!!  VC中,long int的范围跟int的范围一样,因此long int也是不行的;&y&=&nbsp。而long long int的范围为-2^63~2^63-1(-5807),占64位;&nbsp,即8个字节。因此需要将程序做两处改动:1、把x定义为long long int型; & &2、输出类型改为%lld,因此在把这个数赋值给整型的变量y时将会丢失黑色的部分,导致y =&nbsp  由于VC中int的范围为-2^31~2^31-1(-~),占用32位,即4个字节。显然你给的数已经超出了int的范围,因此输出是异常的;0。  关于这个问题可以做进一步的深入讨论,为什么会输出的异常数据时这个呢?;11 00 ;又由于你定义的y是有符号的int型,因此最高位表示符号位..??由于表示成二进制数为 11 00 ,该二进制序列中的非黑体字部分有32位
long long int在vc++6.0里报错,说是vc版本发布,比long long int早。。用了__int64可以解决 (其实目前看不懂。。试了可以)原理解释的很详细,感谢!!!
用double 定义 y输出的时候写成
&%.0lf& 这样小数点后面不输出看起来像整数
你应该看一下C语言的基本数据类型,超出int的范围了
把int改为Long int 就可以了
谢谢,查了一下好像是超出了int和long的范围。。
简单,数值太大超出int的边界值,你改成long x,y就好了
谢谢,查了下好像是连long的范围也超过了。。c是不是没办法处理这么大的数字的?
超过int的最大值了,int的范围是-~
你的这个数已经超过了,所以不对
其他4条回答
为您推荐:
其他类似问题
c语言的相关知识
等待您来回答简介:C语言中的赋值过程有很多值得注意的地方
一、赋值过程中的类型转换
  1、将一个double类型的数据赋值给float类型的数据,截取其前面7位有效数字,存放到float变量的存储单元中,但应注意数值范围不能溢出。
  2、字符型数据赋值给整形数据
  3、将一个占用字节数多的整形数据赋值给一个占用字节少的整形变量或字符变量,比如说将一个long类型(4字节)的变量赋值给一个short类型(两字节)变量,或者将一个占用四字节的int类型数据赋值给占用两字节的short变量,或占用一字节的char变量时,只能将其低字节原封不动地送到被赋值的变量(即发生截断)
如:int i=289;
& & & char c='a';
& & & c=i; &可以想象赋值情况,c的值是33,如果用%c输出c,将得到字符!
& & & int a=32767;
& & & b=a+1;按理论上应该得到32768,但输出的结果却是-32768,原因是对于短整型数据分配两个字节,最大能表示32767,无法表示32768; & a:32767 的二进制 11
& & & & & & & & & & & & & & & & & & & b:-32768 & & & & & & & & & & & & & & & & & & & & &00000
这些东西涉及到组成原理方面的有关补码方面的知识。
二、C语言中有关数据输入输出的概念
  1、所谓输入输出时以计算机主机位主题而言的,从计算机想输出设备(显示器,打印机等)输出数据称为输出,从输入设备(键盘,磁盘,光标,扫描仪)想计算机输入数据称为输入。
  2、C语言本身不提供输入输出语句。输入和输出操作室由c标准函数库来实现的,在c标准库中提供了一些输入输出函数,比如printf函数和scanf函数,实际上他们不是C语言提供的输入输出语句,而且他们也不是C语言的关键字,只是库函数的名字而已。
阅读(...) 评论() &C语言中,如果定义一个变量,但不对其进行赋值,那么输出的这个变量的值由什么决定呢?_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
C语言中,如果定义一个变量,但不对其进行赋值,那么输出的这个变量的值由什么决定呢?
比如这个程序:
#include&conio.h&
#include&stdio.h&
printf(&%d&,a);
并没有对a赋值,为什么运行完输出的结果是呢?
另外,我把换成相当于定义一个字符型变量,同样不对其赋值并以整数型式%d输...
我有更好的答案
操作系统回收内存单元后并不会清除其内容,当程序运行时需要为变量分配空间时就从这些回收的单元中分配,因此变量不赋初值,其值是不确定的。在不同的时刻运行,输出不同;在不同的机器上运行,输出也会不同。
采纳率:52%
来自团队:
即值是不确定的当这个程序运行时,由于你未对啊a,由于程序每次分配的内存单元都是随机的,所以每次输出的值也都是随机的,b初始化或赋值就直接输出,此时a的值就是a所在的内存值,他会给a和b各分配一个内存单元
其实这涉及到计算机的存储机制
首先你必须明白计算机存储介质上并不是清白的 相反是存放了很多以前运算的无用数据的
当你写了int a的时候 系统就把这片无用数据的空间给了a存放数值
如果你赋初值的话
他就可以把原始的无用数据的值覆盖掉
但是你没有
所以就是随机的无用数据值 。但是听说一些高级 最新版的编译器可以自动把存储空间清零的。
楼主定义了整型变量a,系统就会为它在内存中分配一个空间,就相当于你拿到了一个盒子,但是你没有对这个变量赋值,所以这个盒子是空的,至于输出的数值其实是没有实际意义的。
因为你没有对其进行初始化,所以他的值是一个随机量。没有什么意义。
如果你不给变量赋值直接输出的话,变量中的值是随机的,与你使用的编译系统和机器有关,没什么实际意义。
其他3条回答
为您推荐:
其他类似问题
c语言的相关知识
等待您来回答

我要回帖

更多关于 c语言赋值语句 的文章

 

随机推荐