| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 536 人关注过本帖
标题:这2天一些想不出的问题,请大家指教
只看楼主 加入收藏
yaoguai2005
Rank: 1
等 级:新手上路
帖 子:168
专家分:0
注 册:2005-9-11
收藏
 问题点数:0 回复次数:3 
这2天一些想不出的问题,请大家指教

<1>:下面的输出结果是12.3457.我不明白, 双精度字宽8,15有效位,它为啥偏要只显示7位数,要截取掉后面的?始终看不明白,
#include <iostream.h>
void main()
{
double a=12.3456789;

cout<<a<<endl;
}
<2>:第2题
#include <iostream.h>
void main()
{
int a[]={5,8,7,6,2,7,3};
int y,*p=&a[1];
y=(*--p)++;
cout<<y<<"\n";
}
#include <iostream.h>
void main()
{
int a[]={5,8,7,6,2,7,3};
int y,*p=&a[1];
y=(*--p)++;
cout<<y<<"\n";
}
最后结果y=5是正确的,可我看不懂y=(*--p)++;这句。
我理解是(*--P)应该等于5,(*--P)++;然后就变成了Y=*5++;*5++的地址当然等于8了
我觉得最后应该Y=8才对,可书上和编译器却说是5,不能理解,我到底糊涂在什么地方呢。

《3》

int *p
p=new int[10]
if(!p) //从这句话到结束我不能看懂,IF语句在这里有什么用,他起的作用是什么呢
{
cout<<""; //P为真,它输出什么,P为假,它又输出什么呢,不明白
exit(1); //搞不明白这个题咋样运行的,特别是这个IF语句。
}
for (int i=0;i<10;i++)
p[i]=i;
...
delete [10]p;

看了2天的基础,产生了几个这样的问题,决不是我有了问题就来问,自己不去思考。
而是我想不出来才来问的,
请大家给点意见~~~~~~谢谢~~~

[此贴子已经被作者于2005-10-30 17:39:30编辑过]

搜索更多相关主题的帖子: 指教 
2005-10-30 17:27
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
第一题:Floating-point types are displayed with a total of six digits, except that trailing zeros aren't displayed.
you can use precision(..) to display more. For example:

#include <iostream>
using namespace std;

int main()
{
double a=12.3456789;
cout.precision(9);
cout<<a<<endl;

return 0;
}

///////////////////////////////////////////
第二个问题
你运行一下下面的程序,分别在Dev 和 VC 下面, 看看得出的结果是什么.
我想告诉你的是, 这个题目其实没什么意思, 如果要回答出题者, 那么答案是,
出题者不懂编程, 他该认真学习学习.

不过这道题也告诉我们, 我们应该注意程序的书写风格, 不要在一句赋值表达式中使用 ++, 或--,
因为不同的编译器会做出不同的解释.
当然如果你清楚在当前编译器的预计结果, 那么也没有什么问题,
如果不清楚, 那么会产生与你预计不同的结果出来, 那么这样的差错会进一步
影响后面的程序, 这样的所谓的出错是很难查出来的. 所以要小心处理++ 和 --
一般如果不是赋值语句,可以使用 ++ 或 --, 如 count++; 这里任何编译器都得出相同的结果
而 count = count++; 这样的语句要避免.

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
int a[]={5,8,7,6,2,7,3};
int y;
int *p=&a[1];
y = (*--p);
y = y++;
cout<<y<<"\n";

system("pause");
return 0;
}
////////////////////////
问题3:
if(!p) 等价于 if(p == 0) 你想如果 p 等于 0 那么 !0 就等于 1, 也就说 if 判断为 真,那么就执行 if 块内的语句.
所以你看出来了, 作者的意思是想判断 p 这个指针是否为零, 如果为零, 那么 将 退出程序, 那个 exit(1); 就是用来退出程序的. 那个 exit(1) 中的 1, 是用来告诉系统, 程序非正常退出, 也就是说程序出了问题, 并退出.
相比较, 如果是 exit(0); 那么就是程序正常退出, 那个 0 表示一切正常.
你看到程序的结尾都会有一个 return 0; 就是用来表示程序正常, 将0返回给系统, 从而告诉系统, 程序正常运行完毕.


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-10-30 18:45
yaoguai2005
Rank: 1
等 级:新手上路
帖 子:168
专家分:0
注 册:2005-9-11
收藏
得分:0 
看了你的解释就明白了
书是郑阿奇写的,这个人写书还真不少,举的例子很有个性,
今天在看指针这一章,有点难度,打算用2天时间把基础全看完
,下来在看类,接着就又到了WINDOWS基础编程了
这次,不求快,只要稳,不怕学不会VC

[此贴子已经被作者于2005-10-30 22:01:58编辑过]


2005-10-30 21:55
CaiJinLin
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2005-10-23
收藏
得分:0 

啊?
哈哈
我们阿奇老师的书啊
呵呵,是我大二的老师,人不错哦,不过眼神很诡异.
我们现在用的书有好几本是的


学好语言 语言好学
2005-11-01 17:14
快速回复:这2天一些想不出的问题,请大家指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011271 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved