鱼C论坛

 找回密码
 立即注册
查看: 4209|回复: 10

c语言头疼的几个问题

[复制链接]
发表于 2013-3-2 22:37:49 | 显示全部楼层 |阅读模式
10鱼币
1、转义字符在内存中占几个字节?如何存储?
\n占几个字节?\0作为字符的结尾占几个字节?
我在ASCII码中为什么找不到\0?

2、浮点数float、double小数点前后各保留几位?
float不加f就按double处理,但是gcc中:

  1. int main(void)
  2. {
  3. float f = 23.45;//不是23.45f
  4.   printf(“%d”,sizeof(f));//输出结果是4,为什么?
复制代码

3、求无理数e的值的问题。
  1. /*
  2. 2013年2月26日8:09:39
  3. 求无理数e的值:
  4. 公式:e=1+1/1!+1/2!+1/3!+.+1/n!=∑1/n!
  5. */

  6. #include<stdio.h>

  7. double factorial(int n)
  8. {
  9. if(0 == n)
  10. return 1;
  11. else
  12. return n*factorial(n-1);
  13. }

  14. int main(void)
  15. {
  16. int n,i;
  17. double sum = 0.000000;
  18. printf("Please enter a positive integer to determine the precision:\n");
  19. scanf("%d",&n);
  20. printf("e = 0");

  21. for(i =0;i <=n; i++ )
  22. {
  23. sum +=1.00000/factorial(i);
  24. printf("+1/%d!",i);
  25. }
  26. printf("=%.12lf\n",sum);
  27. //这里为了保证精度,将小数点后面的12位全部输出。
  28. return 0;
  29. }

复制代码


问题是 :6位的精度的运算结果还应该是六位呀?怎么会变成12位的精度?

3、我对原型作用域,不是很理解,请大家给解释一下^_^!。

4、char 、unsigned char 都是一个字节,它们的范围是多少到多少?


  1. /*
  2. 如何测试char和unsigned char 的范围
  3. */
  4. #include<stdio.h>
  5. int main(void)
  6. {
  7. unsigned char a = 256;
  8. printf("%c\n",a);
  9. return 0;
  10. }
复制代码

我这里给a赋值,一直到256才报错,a的范围不是(-128,127]吗?

5、c语言中键盘符号有33个,分别是哪33个?

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-2 22:40:13 | 显示全部楼层
提交就不能修改了 对不起大家标号有点问题 大家担待!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-2 23:03:49 | 显示全部楼层
單精度浮點型有效數字是7位 雙精度浮點型有效數字是15到16位  所以小數點后試機位要看小數點前有幾位
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-3 09:27:22 | 显示全部楼层

哦 谢谢 我想知道比如说6.3+6.3=12.6 精度还应该在小数点后一位,为什么结果会是6.3+6.3=12.60?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-3 10:36:06 | 显示全部楼层
1. C语言中,所有的字符都占1个字节,因为转义字符是一种字符,所以转义字符占一个字节,转义字符在内存中用ascii码存储。‘\n’是转义字符,所以占1个字节,‘\0’占1个字节。在在ASCII码中,字符‘\0’就是ascii码值为0的那个字符,因为转义字符可以将它的ascii值直接写进来,比如:'\0'就是ascii值为八进制0的那个字符,'\012'就是ascii值为八进制12的那个字符
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-3 10:37:15 | 显示全部楼层
好吧,你的问题很多,其它问题留给其它同学来回答。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-5 14:22:43 | 显示全部楼层
因为上班时间 不能很认真的看你贴的代码,一些比较简洁的问题 我这边可以试试回答看:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-5 14:35:44 | 显示全部楼层
刚刚不好意思,敲了一下回车就回复了。第一个问题:\n \0都占一个字节。但当你统计字符串长度的时候\0是不加进去的。
2:float不加f就按double处理,这句话我不知道是否有考究,不过很明显的 sizeof(double类型)是8,说明并没有完全当double处理。
5 无符号的char型的数据 怎么会是【-128,127】,这是有符号数据的范围
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-6 21:30:05 | 显示全部楼层
支持 3L 的说法
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-8 19:55:07 | 显示全部楼层
空间微粒 发表于 2013-3-3 09:27
哦 谢谢 我想知道比如说6.3+6.3=12.6 精度还应该在小数点后一位,为什么结果会是6.3+6.3=12.60?

不好意思 這個不太清楚
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-14 13:24:41 | 显示全部楼层
256这个数值你不觉得很熟吗?ASCII表就是前255个转移字符的,你的那个a是unsigned char,char 范围是【-128,127】 ,unsigned char 范围是 【0,255】,总之都是 255个字符。希望对你有帮助。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-10 16:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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