c语言的变量有三种类型:char,int,float,double
类型标识符:unsigned,short,register,long和signed.
register表示一个变量可能会用得很频繁.需要很快得存取速度所以指定的把它存到寄存器当中.
当然还有long unsigned int 这样得类型.
用户自定义数据类型
用户可以使用typedef来自己定义自己需要得数据类型.如下例:
typedef unsigned long int myint;
myint num1;
这样num1就是unsigned long int类型的了.
基本的数据类型有:整形、实型、字符型、指针型等
扩展的数据类型有:数组,结构体,联合、共用体等
还可以有自定义的类型.
以下是基本类型的详细的说明
最好找本C语言的书看看,纸介质版的或电子版的都行,建议看谭诰强的c程序设计,最新的是第三版,本人学习时是二版
整型量
整型量包括整型常量、整型变量.整型常量就是整常数.在C语言中,使用的整常数有八进制、十六进制和十进制三种.
整型常量
以下各数是合法的八进制数:
以下各数不是合法的八进制数:
以下各数是合法的十六进制整常数:
以下各数不是合法的十六进制整常数:
以下各数是合法的十进制整常数:
以下各数不是合法的十进制整常数:
整型变量
整型变量可分为以下几类:
①基本型
类型说明符为short int或short'C110F1.所占字节和取值范围均与基本型相同.
类型说明符为unsigned.
无符号型又可与上述三种类型匹配而构成:
(1)无符号基本型 类型说明符为unsigned int或unsigned.
各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同.但由于省去了符号位,故不能表示负数. 下表列出了Turbo C中各类整型量所分配的内存字节数及数的表示范围.
类型说明符 数的范围 分配字节数
整型变量的说明
变量说明的一般形式为: 类型说明符 变量名标识符,变量名标识符,...; 例如:
int a,b,c; (a,b,c为整型变量)
long x,y; (x,y为长整型变量)
unsigned p,q; (p,q为无符号整型变量)
在书写变量说明时,应注意以下几点:
①允许在一个类型说明符后,说明多个相同类型的变量.各变量名之间用逗号间隔.类型说明符与变量名之间至少用一个空格间隔.
[Practice] //1int a,b;
short int c;
short d=100;
b=a◆d;
c=a◆b◆d;
d=d-a◆c-b;'Vtable
of Vtable
'Vupdate
of Vupdate
of Practice
long int c;
long d;
d=a*b*c;
c=d*d*d;
a=c-d;'Vtable
unsigned int c;
int d;
d=b*c;
a=b◆c◆d;
b=-a;'Vtable
①.,-101
void main(){
long x,y;
int a,b,c,d;
c=x◆a;
d=y◆b;
printf("c=x◆a=%d,d=y◆b=%d\n",c,d);
}
将main说明为返回void,即不返回任何类型的值
x,y被定义为long型
a,b,c,d被定义为int型
x◆a-c
y◆b-d
显示程序运行结果 of long x,y;
从程序中可以看到:x, y是长整型变量,a, b是基本整型变量.它们之间允许进行运算,运算结果为长整型.但c,d被定义为基本整型,所以呢最后结果为基本整型.本例说明,不同类型的量可以参与运算并相互赋值.其中的类型转换是由编译系统自动完成的.有关类型转换的规则将在以后介绍.
实型量
实型常量
实型也称为浮点型.实型常量也称为实数或者浮点数.在C语言中,实数只采用十进制.它有二种形式: 十进制数形式指数形式
①十进制数形式
void main()
{
void 指明main不返回任何值 利用printf显示结果 结束
实型变量
实型变量分为两类:单精度型和双精度型,
实型变量说明的格式和书写规则与整型相同.
例如: float x,y; (x,y为单精度实型量)
double a,b,c; (a,b,c为双精度实型量)
实型常数不分单、双精度,都按双精度double型处理.
float a;
double b;
printf("%f\n%f\n",a,b);
此程序说明float、double的不同
a ■■■■
b ■■■■■■■■
显示程序结果
float b;
double d;
d=b*100;
d=d◆a;
b=b-100;
a=b;'Vtable
字符型量
字符型量包括字符常量和字符变量.
字符常量
字符常量是用单引号括起来的一个字符.例如'a','b','=','◆','?'都是合法字符常量.在C语言中,字符常量有以下特点:
①字符常量只能用单引号括起来,不能用双引号或其它括号.
转义字符
转义字符是一种特殊的字符常量.转义字符以反斜线"\"开头,后跟一个或几个字符.转义字符具有特定的含义,不同于字符原有的意义,故称"转义"字符.例如,在前面各例题printf函数的格式串中用到的"\n"就是一个转义字符,其意义是"回车换行".转义字符主要用来表示那些用一般字符不便于表示的控制代码.
常用的转义字符及其含义
转义字符 转义字符的意义
\n 回车换行
\t 横向跳到下一制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜线符"\"
\' 单引号符
\a 鸣铃
int a,b,c;
printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);
此程序练习转义字符的使用
调用printf显示程序运行结果
字符变量
字符变量的取值是字符常量,即单个字符.字符变量的类型说明符是char.字符变量类型说明的格式和书写规则都与整型变量相同.
例如:
char a,b; 每个字符变量被分配一个字节的内存空间,所以呢只能存放一个字符.字符值是以ASCII码的形式存放在变量的内存单元之中的.如x的
b 0 1 1 1 1 0 0 1
所以也可以把它们看成是整型量. C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值.在输出时, 允许把字符变量按整型量输出,也允许把整型量按字符量输出. 整型量为二字节量,字符量为单字节量,当整型量按字符型量处理时, 只有低八位字节参与处理.
main()
char a,b;
printf("%c,%c\n%d,%d\n",a,b,a,b);
a ■ b ■
本程序中说明a,b为字符型,但在赋值语句中赋以整型值.从结果看,a,b值的输出形式取决于printf函数格式串中的格式符,当格式符为"c"时,对应输出的变量值为字符,当格式符为"d"时,对应输出的变量值为整数.
a='x';
b='y';
a,b被说明为字符变量并赋予字符值
把小写字母换成大写字母
以整型和字符型输出
char b;
char d;
b=a◆10;
d=a◆b;'Vtable
b,1,随机
d,1,随机
c1,1,随机
字符串常量
①字符常量由单引号括起来,字符串常量由双引号括起来.
这是与BASIC 语言不同的.但是可以用一个字符数组来存放一个字符串常量.在数组一章内予以介绍.
'a'在内存中占一个字节,可表示为:a
"a"在内存中占二个字节,可表示为:a\0符号常量
符号常量
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量.符号常量在使用之前必须先定义,其一般形式为:
#define 标识符 常量
其中#define也是一条预处理命令(预处理命令都?quot;#"开头),称为宏定义命令(在第九章预处理程序中将进一步介绍),其功能是把该标识符定义为其后的常量值.一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值.习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别.
float s,r;
s=PI*r*r;
printf("s=%f\n",s);
在c语言中用没有函数判定一个变量的类型,可以使用sizeof来判断变量大小.
示例:
#include stdio.h
#include stdlib.h
int main(int argc,char **argv)? ? ? ? ?//主程序
//对C语言内置类型的所占字节数的测试
printf("size of char is: %d\n",sizeof(char));? ? ? ?//字符型数据所占字节数 、
printf("size of short is: %d\n",sizeof(short));? ? ?//短整形数据所占字节数
printf("size of int is: %d\n",sizeof(int ));? ? ? ? //整形数据
printf("size of short int is: %d\n",sizeof(short int)); //短整形
printf("size of long int is: %d\n",sizeof(long int));? ? //长整形数据
printf("size of float is: %d\n",sizeof(float));? ? ? ? ? //浮点型数据
printf("size of double is: %d\n",sizeof(double));? ? ? ? //双精度数据
//对字符及字符串数组所占字节数的测量
char a[] ={'a','b','c','d','e'};
printf("size of a[] is: %d\n",sizeof(a));? ? ? ? ? ? ? ?//输出数组a[]所占字节数
char b[]={"abcde"};? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//初始化字符串b
printf("size of b[] is: %d\n",sizeof(b));? ? ? ? ? ? ? ?//数组b[]
printf("size of c[][] is: %d\n",sizeof(c));? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//二维数组c所占字节数
printf("size of c[0] is: %d\n",sizeof(c[0]));? ? ? ? ? ? ? ? ? ? ? ? ? ?//二维数组中的某行所占的字节数,例如第0行
printf("size of c[0][0] is: %d\n",sizeof(c[0][0]));? ? ? ? ? ? ? ? ? ? ?//某行某个元素,例如第0行第0个元素
//对指针所占字节数的测量
char *p=0;
printf("size of *p is: %d\n",sizeof(p));? ? ? ? ? ? ? ? ? ? ? ?//字符型指针
system("pause");
return 0;
扩展资料
使用sizeof()计算数组长度
将sizeof用于 expr是并没有计算expr的值.特别是在sizeof *p中,指针p可以是一个无效地址,因为不需要对p做解引用操作.
对char类型或值为char类型的表达式做sizeof操作结果为1.对引用类型做sizeof操作,将返回存放此引用类型对象所需的内存空间大小.
对指针做sizeof操作,将返回存放指针所需的内存大小,注意,如果要获取该指针指向对象的大小,则必须对该指针进行解引用.对数组做sizeof操作等效于对其元素做sizeof操作的结果乘上数组元素的个数.
因为sizeof返回整个数组在内存中的存储长度,所以用sizeof数组的结果初一sizeof其元素类型的结果,即可求出数组元素的个数:int sz = sizeof(ia)/sizeof(*ia);
一般包括字符库函数,数学函数,目录函数,进程函数,诊断函数,操作函数等.
字符库函数所在函数库为ctype.h;数学函数所在函数库为math.h、stdio.h、string.h、float.h;目录函数所在函数库为dir.h、dos.h;进程函数所在函数库为stdlib.h、process.h.
诊断函数所在函数库为assert.h、math.h;接口子程序所在函数库为:dos.h、bios.h;操作函数所在函数库为string.h、mem.h;时间日期函数函数库为time.h、dos.h.
C语言为一种程序设计的入门语言.由于C语言的语句中没有提供直接计算sin或cos函数的语句,会造成编写程序困难;但是函数库提供了sin和cos函数,可以拿来直接调用.显示一段文字,我们在C语言中找不到显示语句,只能使用库函数printf.
C语言的库函数并不是C语言本身的一部分,它是由编译程序根据一般用户的需要,编制并提供用户使用的一组程序.C的库函数极大地方便了用户,同时也补充了C语言本身的不足.在编写C语言程序时,使用库函数,既可以提高程序的运行效率,又可以提高编程的质量.
变量的存储类别决定了变量中的数据在计算机内存中的存储位置.C语言中局部变量存放在动态存储区,全局变量或者静态变量存放在静态存储区.下面是关于C语言变量的定义与使用,欢迎参考!
如果要为单片机控制系统编写出高质量的C语言程序,合理的定义并使用变量是非常重要的.程序是用来处理数据的,而变量就是用来存储数据的.每定义一个变量,编译器就会在系统的RAM中分配一个物理存储区域.在单片机控制系统中,RAM资源是非常有限的,作为单片机程序员,绝对不能随意的定义变量,需要精打细算合理定义.为了实现这个目标,必须要对变量的多个特性有深刻的认识.
变量特性:
第第一段:变量定义要选择恰到好处的类型,变量的类型直接决定了它所存储的数据取值范围,这类似于我们生活中使用的各种容器,选择合适的变量类型,不但能保证数据存储安全,还能有效的节约系统资源;
第第二段:变量的作用范围必须清楚,C语言最基本的功能单元是函数,在函数内部使用的变量是私有变量,只能在函数内部使用.多个函数组成一个程序的功能模块,并安置在某一个C文件中,在这些函数的头部定义的变量是静态变量(局部变量),这种类型的变量模块内部的函数都可以访问.如果在模块内部声明变量,并在该模块的头文件中导出,该类型变量就是全局变量,全局变量在整个工程中的所有函数都可以访问;
第第三段:变量占用的RAM资源,私有变量是可以释放的,静态变量与全局变量是不可以释放的.也就是说在程序运行的整个过程中,私有变量占用资源可以供不同的函数重复利用,而静态变量与全局变量是完全被占用不能重复利用的;
第第四段:变量可以存放常数,但因为单片机RAM资源有限,强烈建议不要用变量存放常量,而是在资源相对丰富的FlashROM中存放常量;
第第五段:局部变量与全局变量对于函数来说,访问非常方便,但缺点显而易见:访问的函数越多,数据的安全性越低,一旦出现数据异常,很难排除问题.所以,请尽量减少局部变量与全局变量的使用;
第第六段:函数的型参个数尽量减少,这样型参只会占用通用寄存器组来完成参数传递工作.如果参数过多,编译器可能会被迫分配占用RAM资源,这样不但参数传递效率变低,同时还会导致RAM资源浪费;
明确上述变量定义与使用特点后,在编写程序的时候,一定要利用好这些特性并结合程序的特点,灵活的使用各种类型、各种作用范围的变量,使程序在最大限度上得到优化,使系统性能提升至最优的状态,才是我们嵌入式开发者的终极目标!
拓展:C语言入门学习
什么人需要学习C语言?
①.)C语言不是面向对象语言.
因为这一点,任何学习C语言的人必须学会用函数思考问题.当你真正的去学习一门面向对象语言时,就会有C语言的函数学习基础去对比.这会使学习面向对象编程更容易理解和更有乐趣.
你要顾及到每一件事情,而这在很多其他语言中他会为你处理.你要管理指针,内存分配,和内存回收.你要明白如何处理串,还有动态数据.在其他语言中,所有这些对你来说是隐藏的.你不知道他们如何运行,更不用说改变他们的运行方式了.你得到了使用的便利,失却了对程序的控制和速度.很多情况下,这是笔值得的买卖.其他的情况下就不是这样了.
某些情况下要求使用Lisp,其他的要Java,还有别的要C◆◆.但是C是你坚实的基础.你可能不会使用它做一些项目,但是它会帮助提高你的能力,熟练的用其他语言编程.
那么为什么不学汇编语言呢?汇编是一门学了很有用的.语言,但是它没有C那样的可移植性,并且其他流行的语言比如JAVA的语法是基于C的,而不是汇编.你仍然应该学汇编,但它并不会证明它会像学C那样有用.
你不能使用C#, Java, 或 Basic来完成这些编程任务.
C语言的发展史:
我适合学习C语言吗?
①.)你学习C语言的目的是什么?如果是想从事这方面的工作,那么请义无反顾的坚持下去,推荐你在<<微机原理>>、<<计算机组成原理>>和<<计算机系统结构>>三本书中选一本配合<
以上就是土嘎嘎小编为大家整理的c语言定义函数变量类型相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!