学习c语言的若干问题。 1.float是32位,double是64位,这么说long double应该是128位呀,为什么是80位呢?

还有,double,long double都是12位精度,都是1E-37到1E+37,除了宽度不同,还有什么区别?
2.c语言中八进制,十六进制常量超过unsigned int 表示范围怎么办?会溢出吗?
3.如果我用printf输出123456,这个“123456”会被分配内存空间吗?如果是,它的存储形式是怎样的?
4.我用dev c++编译\f(换页)\v(垂直制表)为什么会出现♀,♂?应该是什么样的?
5.书上说3.0E5,6.E4都是浮点数常量。那么,整型常量能否用科学表示法表示?怎样表示?
另外,我用的教材是谭成予编的《c语言及程序设计基础》

1.这个是C语言 ANSI/ISO标准规定的,应该是经过计算比较实用而节省的。PS,实际不一定就是80b。那个宽度的一样,其他应该也是没什么区别的,可能是原来有不一样的,或使用习惯上的兼容问题。
2.不会(不会内存溢出),晚上23点过了就是0点,没有24,25点。一个道理
3.会,它被分成6个char型外加补上去的个'\0',也就是7个字节,按ASCII里面的对应的一个数字存起来
4.这个真没还没试过,制表符和♀,♂一样都是字符,只是值的大小问题,你可以查一下相关的制表符的ASCII码,可能那个编译器编译出来的ASCII码和别的不一样
5.没记错的话,整形常量要用科学表示法也得转成浮点数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-20
不同的编译系统有不同的长度分配 例如VC++和gcc对long double的字节分配就不同