各位新手老手,牛刀小试一下,看看以下语句执行后,s将是什么样的结果。千万不要调试哦,试试自己的知识
double d1 = -25.123456;
double d2 = -121.334354;
CString s;
s.Format("%d+%d",d1,d2);
以上语句执行后,s会是什么样的数据呢?
问题点数:20、回复次数:16Top
1 楼lfchen(一条晚起的虫--床上用品[家纺]专卖)回复于 2005-07-26 10:29:56 得分 3
double 用“%d”?呵呵,一下子算不出来
“-?????+-????”Top
2 楼handsomerun(毛毛)回复于 2005-07-26 10:37:23 得分 2
偶的程序运行出来是这玩意
-805667145+-1069998182
晕Top
3 楼handsomerun(毛毛)回复于 2005-07-26 10:38:29 得分 2
s.Format("%f+%f",d1,d2);
这才素王道Top
4 楼handsomerun(毛毛)回复于 2005-07-26 10:39:47 得分 0
要把结果算出来
s.Format("%f",d1+d2);Top
5 楼fisker0303(天塌了,地陷了,小花狗不见了.)回复于 2005-07-26 10:42:37 得分 2
晕就一个字。Top
6 楼smartcomplier(坚强的泡沫)回复于 2005-07-26 10:42:49 得分 2
"-25+-121"Top
7 楼handsomerun(毛毛)回复于 2005-07-26 10:45:42 得分 0
1630025988
s.Format("%d",d1+d2);
这个结果,偶疯掉了
不调试,杀了偶都猜不到,哎,Top
8 楼liupengfei(似水流年)回复于 2005-07-26 10:59:30 得分 2
俺不知道,估计是乱七八糟一堆值
Top
9 楼xlzxlich(阳光)回复于 2005-07-26 11:26:01 得分 2
呵呵,我的是:
-805667145+-1069998182Top
10 楼dirdirdir3(风)回复于 2005-07-26 11:51:59 得分 2
%d来显示double的数据肯定错误了。Top
11 楼zh1369(口一华)回复于 2005-07-26 12:37:18 得分 2
"-25+-121"
隐式类型转换!(没调试)Top
12 楼zh1369(口一华)回复于 2005-07-26 12:40:11 得分 0
实际结果是
-805667145+-1069998182
Top
13 楼AntonlioX(做人要厚道)回复于 2005-07-26 12:49:46 得分 1
不能这么用,违反语法。 虽然编译可通过Top
14 楼zh1369(口一华)回复于 2005-07-26 12:50:48 得分 0
我的理解是
根本就没有类型转换,直接把内存变量以%d取入。
是不是可以理解为在机器中double和int就是两种不同的存储方式,
----------------------------------------------------------
原来以为%d,%s等只不过是一些格式符号,今天才知没那么简单!
---------------------------------------------------------
谁来分析一下其中因果!!
Top
15 楼AloneSword(孤剑)回复于 2005-07-26 13:07:02 得分 0
"-25+-121"
Top
16 楼lfchen(一条晚起的虫--床上用品[家纺]专卖)回复于 2005-07-26 13:32:51 得分 0
double和int的存贮方式不一样
int,四个字节
double,8个字节,有表示小数点位置的标志
估计%d的时候,就取了4个字节Top




