基本数据类型和表达式
- 格式:docx
- 大小:671.70 KB
- 文档页数:12
数据类型、运算符和表达式一、C 语言的基本数据类型数据是程序处理的对象。
C 中将数据分为不同的数据类型,任何数据都属于某一种特定的数据类型。
数据类型的作用有两个:一是指明为数据分配多大的存储空间和规定了数据的存储结构,进而规定了数据的取值范围;二是规定了数据所能进行的操作。
C 的数据类型分为基本数据类型和构造类型。
基本数据类型是系统定义的,用户可以直接使用。
构造类型由用户自行定义。
C 的数据类型如图所示。
C 标准没有规定各类数据所占用内存位数。
所以不同c 编译系统的各类数据所占用内存位数是不一样的。
上机使用时,应注意使用的c 编译系统的具体规定。
Turbo C 基本类型 所占位数 数的范围 [signed] char 8 -128~127 unsigned char 8 0~255 [signed]int 16 -32768~32767 short [int] 16 -32768~32767long [int] 32 -2147483648~2147483647 unsigned [int] 16 0~65535 unsigned short [int] 16 0~65535 unsigned long [int]320~4294967295C++数据类型基本类型字符型(char) 空类型(void)整型短整型(short int) 无符号整型(unsigned int)长整型(long int)基本整型(int) 实型(浮点型) 双精度型(double)单精度型(float) 指针构造类型枚举(enum) 联合(union)结构体(struct)数组float 32 约6位有效数字double 64 约12位有效数字在Visual C++中:char:1 Byteint:4 Byteshort:2 Bytelong:4 Bytefloat:4 Bytedouble:8 Byte二、常量常量:整型常量、实型常量、字符常量、字符串常量、符号常量1.整型常量C语言程序中可以使用十进制、八进制和十六进制来表示整型常量。
C语言的基本数据类型与表达式在C语言中,基本数据类型是构建程序的基石。
了解基本数据类型以及如何使用它们进行表达式运算是学习和掌握C语言的重要一步。
基本数据类型C语言的基本数据类型可分为整型、浮点型、字符型和指针类型。
整型C语言提供了不同大小的整型数据类型,包括char、int、short 和long。
它们在存储空间和表示范围上都有所不同。
•char类型用来存储字符,占用一个字节的空间。
可以用来存储ASCII码的字符或者表示-128到127之间的整数。
•int类型一般占用4个字节的空间,表示范围约为-2147483648到2147483647之间的整数。
•short类型一般占用2个字节的空间,表示范围约为-32768到32767之间的整数。
•long类型一般占用8个字节的空间,表示范围约为-9223372036854775808到9223372036854775807之间的整数。
浮点型C语言提供了两种浮点型数据类型:float和double。
•float类型用来存储单精度浮点数,占用4个字节的空间。
它的表示范围为大约1.2E-38到3.4E38,精度约为6位小数。
•double类型用来存储双精度浮点数,占用8个字节的空间。
它的表示范围为大约2.3E-308到1.7E308,精度约为15位小数。
字符型char类型可以用来存储单个字符,它的大小为一个字节。
在C语言中,字符使用ASCII码表示。
指针类型指针类型用来存储变量的内存地址。
使用指针可以间接地访问和修改变量的值。
指针类型在C语言中非常重要,它可以用来实现动态内存分配和数据结构等高级功能。
表达式在C语言中,表达式由操作数和运算符组成。
操作数可以是变量、常量或者表达式的结果,而运算符用来指定操作数之间的运算规则和顺序。
C语言支持多种运算符,包括算术运算符、关系运算符、逻辑运算符等。
算术运算符C语言提供了常见的算术运算符,包括加法+、减法-、乘法*、除法/和取余%。
c语言运算符及其表达式(总14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--C语言的数据类型运算符表达式1.基本数据类型基本数据类型最主要的特点是,其值不可以再分解为其它类型。
也就是说,基本数据类型是自我说明的。
2.构造数据类型构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。
也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。
每个“成员”都是一个基本数据类型或又是一个构造类型。
在C语言中,构造类型有以下几种:·数组类型·结构类型·联合类型3.指针类型指针是一种特殊的,同时又是具有重要作用的数据类型。
其值用来表示某个量在内存储器中的地址。
虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一谈。
4.空类型在调用函数值时,通常应向调用者返回一个函数值。
这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中给以说明,例如在例题中给出的max函数定义中,函数头为: int max(int a,int b);其中“int ”类型说明符即表示该函数的返回值为整型量。
又如在例题中,使用了库函数 sin,由于系统规定其函数返回值为双精度浮点型,因此在赋值语句s=sin (x);中,s 也必须是双精度浮点型,以便与sin函数的返回值一致。
所以在说明部分,把s说明为双精度浮点型。
但是,也有一类函数,调用后并不需要向调用者返回函数值,这种函数可以定义为“空类型”。
其类型说明符为void。
在第五章函数中还要详细介绍。
在本章中,我们先介绍基本数据类型中的整型、浮点型和字符型。
其余类型在以后各章中陆续介绍。
对于基本数据类型量,按其取值是否可改变又分为常量和变量两种。
在程序执行过程中,其值不发生改变的量称为常量,取值可变的量称为变量。
它们可与数据类型结合起来分类。
例如,可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、枚举常量、枚举变量。
第一章 基本数据类型和表达式C++数据类型为什么要分数据类型 不同的数据类型存储格式不同。
不同的数据类型所实施的操作不同C++数据类型1、整形数据各种整形数据的基本情况数据类型 占用字节(跟编译器有关)数据范围short2 bytes -32768~32767 unsigned short2 bytes0~65535int 2bytes(16位机) 4 bytes(32位机) -32768~32767 -(231)~231-1 unsigned int2bytes(16位机) 4bytes(32位机)0~65535 0~232-1long 4bytes -(231)~231-1 unsigned long4 bytes0~232-1整形常量在整形常量后可加修饰符l 或L 表示长整型基本类型实型(浮点型)双精度型(double)十进制整数:以非零的数字开始123//signed int65000//unsigned int123u//unsigned int123L//singed long int八进制整数:以零开始0123=83//unsigned int011L=9//unsigned long int十六进制整数:以0X或0x开始0x123=291//signed int0X123u=291//unsigned int整型变量类型修饰符变量名[=表达式][,变量名[=表达式]]int x,y;int i=1,j=0;2字符型数据字符型数据的基本情况字符类型:在内部实现是个单字节长度的整型,因此常用字符型定义值较小的整数。
单引号括起来的一个字符如’a’,’D’,’?’,’S’字符数据在内存中的存储形式以ASCII码存储,占1字节,用7位用于表示字符时存放的是字符的ASCII码值。
数据类型占用字节数据范围char 1Byte -128~127 unsigned char 1Byte 0~255转义字符转义序列对应ASCII码值对应功能或字符转义序列对应ASCII码值对应功能或字符\b 8 退格\’39 单引号\f 12 换页\’’34 双引号\n 10 换行\? 63 问好\r 13 回车\ccc ccc为八进制值该值对应的字符\t 9 水平制表\\xhh hh为十六进制值该值对应的字符字符变量用来存放字符常量例:char c1,c2;c1=’a’;c2=’A’;字符型和整形的关系字符数据和整形数据之间可以通用,可以按字符形式输出,也可以按整形输出。
#include<iostream.h>main() Array {char c1,c2;c1=’a’;c2=’b’;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);}#include<iostream.h>void main(){int a,b;a=’a’;b=’b’;c=97;d=98;c=a-32;d=b-32;a=a-32;b=b-32;cout<<a<<“”<<b<<“”<<int(c)<< “”<<int(d)<<endl;cout<<char(a)<<“”<<char(b)<<“”<<c<< “”<<d<<endl;}枚举型将需要的变量值一一列举出来,构成一个枚举类型。
enmu 枚举名{变量值类表};例如:enum weekday{sun,mom,tue,wed,thu,fri,sat};#include<iostream.h>void main(){enum color{red,green,blue}; //red=0,greed=1,blue=2color paintbrush=red; //ok//color paintbrush=0;//error//color paintbrush; paintbrush=red;//ok// paintbrush=0;//error if(paintbrush==0) // paintbrush==red//ok cout<<”red paintbrush ”<<endl; }实型数据实行数据数据类型 占用字节 精度 有效数字位数float 4 3.4×10±387double 8 1.7×10±30815 long double104.3×10±492319float 实行变量列表 double 实型变量列表 long double 实型变量列表#define PRICE 30#include<iostream.h> void main() {int num,total; float v,r,h; num=10;total=num*PRICE; cout<<total<<endl; r=2.1; h=3.3;v=3.14159*r*r*h; cout<<v<<endl; }符号常数与常值变量符号常数:用制定名字代表的常数。
#define MAXLINE 100可读性好,修改方便在预编译时将程序中凡出现MAXLINE 的地方全部用100代替。
尽管他具有常量的所有属性,但是在编译预处理完成后,MAXLINE 就不属于程序中的名字了,所以提不是一个具有一定类型的常量名(在C++中只为了兼容菜保留#define )。
常值变量const float PI=3.141592653; //PI=3.141593const double PI=3.141592653; //ok定义成const后的变量,程序中对其只能读不能修改。
因此常量定义是必须初始化。
const flout PI;PI=3.141592653; //error数值表达式算术运算符基本算术运算符:+ - * / %(取余)强制类型转换:例:(double)a, double (a), (int) (x+y), (float) (5%3)变量本身未变化.位运算符按位与:&将某一位置0,其他位不变。
例:将char型变量啊的最低位置0.a=a&0376; //a&11 111 110B取指定位。
例:有char c; int a; 取出a的低字节,置于c中。
c=a&0377; //a&11 111 111B按位或:|将某些位置1,其他位不变。
例:将int型变量a的低字节置1。
a=a|0xff;按位异或:^使特定位翻转(与0异或保持原值,与1异或取反)。
例:要使01111010B第四位翻转;01111010B(^)00001111B01110101B左移运算:<<左移后,低位补0,高位舍弃。
右移运算:>>右移后,低位舍去,高位无符号数补0;有符号数补0 ;(逻辑右移)有符号数补“符号位”(算术右移)取反:~例:将int型数据a最低位置0;a=a&~1; //~1=11……10B自增、自减运算表达式++表达式表达式++--表达式表达式--具有副作用int a=3;int b=++a; // a=a+1;b=a;int c=a++; //c=a;a=a+1;int b=--a; //a=a-1;b=a;int c=a--; //c=a;a=a-1;int b=++a++; //error,a++非左值int d=++++a; //ok,d=5int d=++3; //errorint c=(++a)++; //ok,++a为左值,c=4int c=(--a)--; //ok,--a为左值,c=2赋值类运算表达式赋值类运算符:= += -= *= /= %= &= |= ~= >>= <<= ^=左值op=表达式等价于左值=左值op表达式●其中,左值:变量,数组元素,类成员,结构成员,*p具有副作用由混合类型计算引起的类型转换成为自动类型转换,不需要再程序里明确说明。
自动类型转换的原则:把表示范围小的类型的值转换为表示范围大的类型的值。
类型转换的顺序从小到大是:int long float double long double“=”两侧类型不一致时,要进行类型转换:整形=实型:截掉小数部分。
实型=整形:数值不变,存为浮点。
整形=字符型:存入整形低8位,0或符号位扩展存入高8位(与机器有关)。
long int=int:符号位扩展。
int=long int:long int低16位存入int。
long int=unsigned int:高位补0。
整形=(字节数相同的)unsigned整形:原样送入,若超过整形表示范围,会出错。
unsigned=(字节数相同的)非sunsigned模型:原样送入,符号位也作为数值。
其他运算符sizeof -> ±& new deletesizeof(类型名)或sizeof(表达式):求变量、类型所占的字节数。
#include<iostream.h>void main(){cout<<”sizeof(char)=”<<sizeof(char)<<endl<<”sizeof(int)=”<<sizeof(int)<<endl<<”sizeof(unsigned)=”<<sizeof(unsigned int)<<endl<<”sizeof(long)=”<<sizeof(long int)<<endl;}运算符的优先级和结合型详解:符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。
C语言运算符优先级顺口溜[转]醋坛酸味灌,味落跳福豆。
(共44个运算符)醋-初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员坛-单目,9个: ! ~ ++ -- -负号 (类型)*指针 &取地址 sizeof 长度(自右向左)酸-算术,5个: * / % + -减味-位移,2个: << >>灌-关系,6个: < <= > >= == 等于 != 不等于味-位逻,3个: & 按位与 ^ 按位异或 | 按位或落-逻辑,2个: && 逻辑与 || 逻辑或跳-条件,1个,三目: ? : (结合方向:自右向左)福-赋值,11个: = += -= *= /= %= >>= <<= &= ^= |= (结合方向:自右向左)豆-逗号,1个: ,结合方向自右向左的只有三类:赋值、单目和三目,其它的都是从左至右结合。