佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 915|回复: 7

想问一下 DATATYPE 的 CHANGE....(C++的问题来的)

[复制链接]
发表于 5-7-2008 11:35 AM | 显示全部楼层 |阅读模式
为什么HOR~

char a;
int    b;

printf("please enter a character :  " ) ;
scanf("%c",a);

printf("The value of the character is %d",a);

它会BASE ON ASCII CODE 变成数目的...倒反的话它会变成 CHARACTER

可是hor...问题来了

printf(" Enter a number : " ) ;
scanf("%d",b ) ;

printf(" The number u enter is :%f,b"  ) ;


这个的VALUE 我想把 INTEGER 变成 FLOAT /DOUBLE 却VALUE 不一样的..
好象是 ERROR of value 来得.....烈如我INSERT 5 ...答案 = -1892379281793281
怪怪的NUMBER 来的..不能变去 5.000000000000的..

float b;
printf(" Enter a number : " ) ;
scanf("%f",b ) ;

printf(" The number u enter is :%d,b"  ) ;

还有如果我倒反DATA TYPE 的话... 我INSERT 1.345...应该变成INTEGER 麻...可素..为什么还是出现0.0000000没有ANSWER

上面的 可以把 INTEGER---> CHARACTER.... CHARACTER TO INTEGER...
可是下面的不能把 INTEGER--> FLOAT..... FLOAT TO INTEGER

为什么 `  ` ` `
回复

使用道具 举报


ADVERTISEMENT

发表于 5-7-2008 11:44 AM | 显示全部楼层
你这么做有什么实际作用?
回复

使用道具 举报

发表于 5-7-2008 11:57 AM | 显示全部楼层
看不懂。。。。
回复

使用道具 举报

发表于 5-7-2008 12:20 PM | 显示全部楼层
原帖由 贱猪头 于 5-7-2008 11:57 AM 发表
看不懂。。。。


呃。。。老大真是名副其实。。。
回复

使用道具 举报

发表于 5-7-2008 04:52 PM | 显示全部楼层

回复 1# 超级变态龙 的帖子

char 可以变成 integer 是因为 char 本身就是 integer。 char 是以 128/255 个integer 组成的( 根据 ASCII/ extended -ASCII ), 但是 integer 与 float (float, double ) 等等的data type 是不同的。

integer 基本上以 8 bits 组成。 在最左边的是sign bit, 1 是 negative , 0 是 possitive如 -25 是 10011001 而 25 是 00011001 其余 7 bits 是数值。

而在 floating point 系统里, (这里那32 bits 的系统来举例),
最左边的是 sign bit, 接下来 8 bits 是exponent, 其余的是 fractional。, 也就是 S | EEEEEEEE | FFFFFFFFFFFFFFFFFFFFFF , exponent 就是 2 ^ x, 如 sign 是0, exponent 是145 ( 10010001), fractional 是100011100001000000000000

那么就是说, 1.00011100001 * 2^( 145 - 127)

这样说你可能不很明白, 不过主要得是你明白 integer 鱼 floating point 的系统是不同的, 在bit 的排法上是两个完全不同的世界。 因此你无法让 c/c++ 在不使用 cast operator 的情况下转换data type 的。

[ 本帖最后由 onlylonly 于 5-7-2008 05:06 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 5-7-2008 06:00 PM | 显示全部楼层
原帖由 onlylonly 于 5-7-2008 04:52 PM 发表
char 可以变成 integer 是因为 char 本身就是 integer。 char 是以 128/255 个integer 组成的( 根据 ASCII/ extended -ASCII ), 但是 integer 与 float (float, double ) 等等的data type 是不同的。

integ ...



也就是说 CHAR = INTEGER 他们可以任意互相交换DATA TYPE?~因为CHAR 是 由 INTEGER 组成的??


INT 和 FLOAT 是不能 因为他们 是不同系统的??
回复

使用道具 举报

Follow Us
发表于 5-7-2008 09:47 PM | 显示全部楼层
其实不应该说是交换data type。

%f 的意思就是叫 compiler 以 floating point system 的方式将 variable 读出来。 但是 floating point 与 integer 的读法不同, 因此你得到的结果必定不是你说希望的。

而 integer 与 char 都是以 integer format 储存的。 char 储存时将会将char 转换成 ASCII 码储存。 ASCII 是 integer 来得, 所以我说char 与 integer 是 integer format, 这样你明白了嘛?

%c 就是以 variable 的数值, 然后与 ASCII 码对照, 然后显示出相对的char 来。
回复

使用道具 举报

发表于 5-7-2008 09:47 PM | 显示全部楼层
原帖由 超级变态龙 于 5-7-2008 06:00 PM 发表
也就是说 CHAR = INTEGER 他们可以任意互相交换DATA TYPE?~因为CHAR 是 由 INTEGER 组成的??
INT 和 FLOAT 是不能 因为他们 是不同系统的??


他的意思是,char 和 int 在 memory 形态是一样的。int 和 float 在 memory 形态是不一样的。

譬如说:
memory 0x001F,对char来说就是 '1' ,对int来说就是31,对float 来说就是另一个小数值。
回复

使用道具 举报


ADVERTISEMENT

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 24-12-2025 01:15 AM , Processed in 0.439754 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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