关于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]]