| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2579 人关注过本帖
标题:关于char的深入研究
取消只看楼主 加入收藏
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
结帖率:97.78%
收藏
 问题点数:0 回复次数:6 
关于char的深入研究
  大家好,我学C语言已有好几个月的时间了,自己也做过一些小功能的程序,自己用的蛮舒服的.在设计这些程序的时候,有一些程序要涉及到类似于开关变量.就是说只可能等于0或者1的一个开关变量,就是说判断用的.如果这是1就怎么样,如果是0又怎么样..这种程序,我以前一直使用的是int类型的(大家请不要说废话,更不要点击右上角的小叉叉关掉,请看完这片短小的文章,肯定会有收获的!),这几天我想学一下单片机,认为可能可以使C语言在位运算的操作中更加的娴熟.到电脑城要我爸爸(我现在14岁)买了一张"十天征服单片机"今天开始学.
  听了很久的理论知识,然后就开始讲C-51(他说是C语言,不过和普通的有一点区别.),第一节课讲得是类型,说了int是在几几几到几几几之间,long是.....char 是-128~127.听到这里,我就想到了一个有用的东西,可以节省一些内存空间.就是说上面所说到的开关语句可以使用char来表示,可以节省一个字节.看似不大,但是我相信大程序肯定能够节省很大的空间的!然后一些可以百分之百确定大小不会超过127的也可使用char来定义变量.然后如果说会超过的话,你还可以考虑一下unsigned char 这个的范围在0~255之间,也是一个字节,就是所谓的无符号字符型.
  我自己先举一个例子,用递归求阶乘的
程序代码:
#include <stdio.h>
#include <conio.h>
long jc(char i){
  if(i==1)
    return 1;
  else
    return jc(i-1)*i;
}
int main(void){
  char i;
  printf("请输入求几的阶乘:\n");
  scanf("%d",&i);
  printf("%ld",jc(i));
  getch();
  return 0;
}
  肯定不能输入大于100的数字啦,那早就超标了,所以就可以使用char来表示,而是用递归的原因是,每一次执行函数会临时在内存中声明一次,当然,函数结束后肯定是会消失的,但是先不考虑这个.比如说我输入的是5,那当它到1的时候,就定义了5个变量,如果我使用的是int来定义的话,那就会比char增加5个字节,如果我输入更大,那就会多增加更多的字节,反之.使用char可以节约一些内存空间.
  咋样?反正对我自己来说是一份新的收获!很好类..

[[it] 本帖最后由 zqy110007 于 2008-12-13 17:22 编辑 [/it]]
收到的鲜花
  • 广陵绝唱2008-12-13 18:06 送鲜花  49朵   附言:态度认真奖。
搜索更多相关主题的帖子: char 研究 
2008-12-13 16:11
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
自己先顶一个!
这真正的叫做温故而知新!

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-13 16:12
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
谢谢你的建议,我想提一个问题:
c里面有Boolean吗?
单片机也没打算特别的学.

[[it] 本帖最后由 zqy110007 于 2008-12-13 16:56 编辑 [/it]]

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-13 16:54
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
为什么没有省?

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-13 17:20
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
是不是因为在32位的计算机里一个汉字和一个英文字母都只算是一个字符,所以char 是两个字节了.
猜的啊..
但是一般的机子都应该可以节省空间..
还有哦,你的
00411480  mov         al,byte ptr [i]
00411483  push        eax  
我看不懂,是汇编的代码吧?

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-13 17:30
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
回复 第15楼 新浪 的帖子
我接触的语言不多,但是至少我接触的语言中一个叫做AS的语言,有一个功能,自动按系统格式将代码排列.
他就是这种规则啊.

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-13 19:34
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
和我的是一样的吧?

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-13 21:54
快速回复:关于char的深入研究
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015497 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved