首先说一下C语言中用单引号和双引号的不同(一直搞不清楚):
单引号代表的是一个整数,而这个整数的值是编译器所采用的字符集中的字符序列对应的值。所以一般‘A‘和ASCII中的65意义相同。
对于双引号定义的我们可以叫他“字符串”,那么对于单引号定义的我们叫他字符常量或者字符。
再说说int和char,现在感觉自己C语言中好多概念模糊啊,很多到用到的时候总是弄不清楚,基础不打好怎么向上进步呢?所以还是静下心来好好巩固一下基础吧。
int是有符号整型,大部分系统默认int是long int,占4个字节,也就是32比特,32位二进制数。short int 就是占两个字节了。
而char是字符型,占一个字节,可以用来表示一个字节的有符号整型数,但是用char定义整型数的时候要注意区分有符号和无符号,有符号char型的取值范围是(-128~+127),无符号整型数的取值范围是(0~255),定义的数一旦超过这个范围,即产生溢出,使数据出错,这是很严重的错误,千万记住。不同的编译器char表示的不同,我用的 cfree5里面,char就默认是有符号char(估计大部分也都是有符号的),最大只能定义127。也可以定义一个字符。但是定义的这个字符是以ASCII码值的8位二进制信息存放在内存里面的,不是一个字符存放在里面。那么再结合int来看,也就是说我们可以定义一个int类型的变量来存放四个字符。也最多只能存放4个单字符。但是这种方式编译器会警告。
所以有时候想要节省单片机的空间的话可以定义char类型,但是有两点需要注意,一是注意你需要的数是有符号还是无符号,二是注意这个数不要溢出。
之前我用单片机编程的时候。看人家用char我也用char。人家用unsigned char我也用,一点不清楚到底什么时候用这个?为什么用这个。今天总结完这些,开始明白了。
既然char和int本质都是整数,为什么还要作区分呢?
因为字符的个数相对较少,也就128个,因而char型变量的存储单元可以比int型变量的存储单元小。其实就是提出一种char型变量专门存储字符,方便程序员的数据选择。
下面简单讲一下字符串:
定义一个字符串常量的时候主要有两种方法:
#include "stdio.h" char ch[] = "abcdef";//用一维数组来存放字符串 char *p = "hello,world";//用一个指针指向字符串的开头地址 int main(){ printf("%s\n",ch); printf("%s\n",p); puts(ch);//使用puts函数输出字符串 puts(p); //puts输出字符串之后会自动换行 }
但是字符串数组就需要二维数组来存放了。其实字符串数组就是二维数组。
#include "stdio.h" char a[3][6] = {//二维数组存放多个字符串 "hello", "world", "hi!", }; int main(){ for(int i = 0;i<3;i++){ printf("%s\n",a[i]); } }
其实都是很基本的C语言知识,但是谁让当时自己没有认真学的呢?现在只能慢慢来弥补了。