找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 569|回复: 3

这2天一些想不出的问题,请大家指教

[复制链接]
发表于 2009-10-31 02:11:50 | 显示全部楼层 |阅读模式 IP:江苏扬州
<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天的基础,产生了几个这样的问题,决不是我有了问题就来问,自己不去思考。
而是我想不出来才来问的,
请大家给点意见~~~~~~谢谢~~~
发表于 2009-10-31 02:11:51 | 显示全部楼层 IP:江苏扬州
第一题: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返回给系统, 从而告诉系统, 程序正常运行完毕.
回复

使用道具 举报

发表于 2009-10-31 02:11:52 | 显示全部楼层 IP:江苏扬州
看了你的解释就明白了
书是郑阿奇写的,这个人写书还真不少,举的例子很有个性,
今天在看指针这一章,有点难度,打算用2天时间把基础全看完
,下来在看类,接着就又到了WINDOWS基础编程了
这次,不求快,只要稳,不怕学不会VC
回复

使用道具 举报

发表于 2009-10-31 02:11:53 | 显示全部楼层 IP:江苏扬州
啊?
哈哈
我们阿奇老师的书啊
呵呵,是我大二的老师,人不错哦,不过眼神很诡异.
我们现在用的书有好几本是的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 17:22 , Processed in 0.312438 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表