基本数据类型和表达式

基本数据类型和表达式
基本数据类型和表达式

第一章 基本数据类型和表达式

C++数据类型

为什么要分数据类型 不同的数据类型存储格式不同。

不同的数据类型所实施的操作不同

C++数据类型

1、整形数据

各种整形数据的基本情况

数据类型 占用字节(跟编译器有关)

数据范围

short

2 bytes -32768~32767 unsigned short

2 bytes

0~65535

int 2bytes(16位机) 4 bytes(32位机) -32768~32767 -(231)~231-1 unsigned int

2bytes(16位机) 4bytes(32位机)

0~65535 0~232-1

long 4bytes -(

231)~231

-1 unsigned long

4 bytes

0~2

32

-1

整形常量

在整形常量后可加修饰符

l 或

L 表示长整型

基本类型

实型(浮点型)

双精度型(

double)

十进制整数:以非零的数字开始

123//signed int

65000//unsigned int

123u//unsigned int

123L//singed long int

八进制整数:以零开始

0123=83//unsigned int

011L=9//unsigned long int

十六进制整数:以0X或0x开始

0x123=291//signed int

0X123u=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

main() Array {

char c1,c2;

c1=’a’;

c2=’b’;

printf(“%c%c\n”,c1,c2);

printf(“%d%d\n”,c1,c2);

}

#include

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<

cout<

}

枚举型

将需要的变量值一一列举出来,构成一个枚举类型。

enmu 枚举名{变量值类表};

例如:

enum weekday{sun,mom,tue,wed,thu,fri,sat};

#include

void main()

{

enum color{red,green,blue}; //red=0,greed=1,blue=2

color paintbrush=red; //ok

//color paintbrush=0;//error

//color paintbrush; paintbrush=red;//ok

// paintbrush=0;//error if(paintbrush==0) // paintbrush==red//ok cout<<”red paintbrush ”<

实型数据

实行数据

数据类型 占用字节 精度 有效数字位数

float 4 3.4×10±38

7

double 8 1.7×10±308

15 long double

10

4.3×10±4923

19

float 实行变量列表 double 实型变量列表 long double 实型变量列表

#define PRICE 30

#include void main() {

int num,total; float v,r,h; num=10;

total=num*PRICE; cout<

v=3.14159*r*r*h; cout<

符号常数与常值变量

符号常数:用制定名字代表的常数。 #define MAXLINE 100

可读性好,修改方便

在预编译时将程序中凡出现MAXLINE 的地方全部用100代替。

尽管他具有常量的所有属性,但是在编译预处理完成后,MAXLINE 就不属于程

序中的名字了,所以提不是一个具有一定类型的常量名(在C++

中只为了兼容菜保留#define )。

常值变量

const float PI=3.141592653; //PI=3.141593

const 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

(^)00001111B

01110101B

左移运算:<<

左移后,低位补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=5

int d=++3; //error

int c=(++a)++; //ok,++a为左值,c=4

int 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 delete

sizeof(类型名)或sizeof(表达式):求变量、类型所占的字节数。

#include

void main()

{

cout<<”sizeof(char)=”

<

<<”sizeof(int)=”<

<<”sizeof(unsigned)=”

<

<<”sizeof(long)=”

<

}

运算符的优先级和结合型

详解:

符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。

C语言运算符优先级顺口溜[转]

醋坛酸味灌,味落跳福豆。(共44个运算符)

醋-初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员

坛-单目,9个: ! ~ ++ -- -负号 (类型)*指针 &取地址 sizeof 长度(自右向左)

酸-算术,5个: * / % + -减

味-位移,2个: << >>

灌-关系,6个: < <= > >= == 等于 != 不等于

味-位逻,3个: & 按位与 ^ 按位异或 | 按位或

落-逻辑,2个: && 逻辑与 || 逻辑或

跳-条件,1个,三目: ? : (结合方向:自右向左)

福-赋值,11个: = += -= *= /= %= >>= <<= &= ^= |= (结合方向:自右向左)

豆-逗号,1个: ,

结合方向自右向左的只有三类:赋值、单目和三目,其它的都是从左至右结合。

注意:

自己今天写程序时候把关系运算符号和位逻辑的优先级弄反。尽量用括号,就不出问题。如:if(P1OUT&BIT0==0)P1OUT ^=BIT0; //判断P1OUT是否输出为0,是就翻转,即点亮LED.这行程序是错误的。可两边加上括号,即if((P1OUT&BIT0)==0),或是直接用:

P1OUT|=BIT0;

C语言中,只有4个运算符规定了运算方向,它们是&&、| |、条件运算符及赋值运算符。&&、| |都是先计算左边表达式的值,当左边表达式的值能

确定整个表达式的值时,就不计算右边表达式的值。如 a = 0 && b; &&运算符

的左边位0,则右边表达式b就不再判断。在条件运算符中。如a?b:c;先判

断a的值,再根据a的值对b或c之中的一个进行求值。赋值表达式则规定先

对右边的表达式求值,因此使 a = b = c = 6;成为可能。

逻辑型数据与逻辑表达式

关系、逻辑运算符

关系运算符:< == > <= >= !=

逻辑运算符:&& || !

◆关系成立,该关系式描述的关系“真”,有逻辑值“真”;

◆不成立时,该关系式描述的关系“假”,有逻辑值“假”。

◆关系类型bool,值域为false和true。

●bool flag=false,ok;

◆程序里用逻辑判断/逻辑值控制计算进程。

条件运算符?:

◆条件式1?表达式2:表达式3

#include

void main()

{

int a,b,c;

cin>>a>>b;

cout<<”x=a

}

自定义类型修饰符

给类型定义一个新名字

typedef 已定义过得类型名新类型名;

例:typedef int age;

表达式的副作用与表达式语句

表达式副作用

?在表达式求值过程中除提取变量的值外,还可以改变变量的值。

具有副作用的操作符

?负值类

?自增、自减

#include

main()

{ Array int I,j k1,k2,k3;

i=3;j=4;k1=i+++j;

cout<<”k1=”<

i=3;j=4;

k2=(i++)+j;

cout<<”k2=”<

i=3;j=4;

k3=i+(++j);

cout<<”k3=”<

i=3;

cout<<”i=”<

}

逗号表达式

◆格式:表达式1,表达式2

◆求解顺序及结果:先解表达式1,再解表达式2,最终结果为表达式2的

值。

(a=1,b,c+1,d)=5; //ok,d为左值

if语句

C语言关键字共32个

由ANSI标准定义的C语言关键字共32个: auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static 根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类。 1数据类型关键字 A.基本数据类型(5个) void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果 char:字符型类型数据,属于整型数据的一种 int:整型数据,通常为编译器指定的机器字长 float:单精度浮点型数据,属于浮点数据的一种 double:双精度浮点型数据,属于浮点数据的一种 B.类型修饰关键字(4个) short:修饰int,短整型数据,可省略被修饰的int。 long:修饰int,长整形数据,可省略被修饰的int。 signed:修饰整型数据,有符号数据类型 unsigned:修饰整型数据,无符号数据类型 C.复杂类型关键字(5个) struct:结构体声明 union:共用体声明 enum:枚举声明 typedef:声明类型别名 sizeof:得到特定类型或特定类型变量的大小 D.存储级别关键字(6个) auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配 static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部 register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数 extern:指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变) volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值 2流程控制关键字

C++习题第02章 基本数据类型、运算符与表达式

第02章基本数据类型、运算符与表达式 1. 选择题 (1)在32位机中,int型字宽为()字节。 A) 2 B) 4 C) 6 D) 8 (2)下列十六进制的整型常数表示中,错误的是()。 A) 0xad B) 0X11 C)0xA D) 4ex (3)设n=10,i=4,则执行赋值运算n%=i-1后,n的值是()。 A) 0 B) 1 C) 2 D) 3 (4)若有a=2,b=4,c=5,则条件表达式a>b?a:b>c?a:c的值为()。 A) 0 B) 2 C) 4 D) 5 (5)若有a=1,b=2,则表达式++a==b的值为()。 A) 0 B) 1 C) 2 D) 3 2.简答题 (1)指出下列数据中哪些可作为C++的合法常数? (a) 588918 (b) 0129 (c) 0x88a (d) e-5 (e) ″A″ (f) .55 (g) ’\\’ (h) 0XCD (i) 8E7 (j) π (2)指出下列符号中那些可作为C++的合法变量名? (a) ab_c (b) β (c) 3xyz (d) if (e) cin (f) a+b (g) NAME (h) x! (i) _temp (j) main (3)根据要求求解下列各表达式的值或问题。 (a) (int)3.5+2.5 (b) (float)(5/2)>2.4 (c) 21/2+(0xa&15) (d) 设int i=10,则表达式i&&(i=0)&&(++i)的值是多少?该表达式运算结束后变量i的值为多少? (e) 设int a=1,b=2,c=3;,求表达式a

c语言数据类型关键字

1 数据类型关键字(12个): (1) char :声明字符型变量或函数 (2) double :声明双精度变量或函数 (3) enum :声明枚举类型 (4) float:声明浮点型变量或函数 (5) int:声明整型变量或函数 (6) long :声明长整型变量或函数 (7) short :声明短整型变量或函数 (8) signed:声明有符号类型变量或函数 (9) struct:声明结构体变量或函数 (10) union:声明联合数据类型 (11) unsigned:声明无符号类型变量或函数 (12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)(2)控制语句关键字(12个): A循环语句 (1) for:一种循环语句(可意会不可言传) (2) do :循环语句的循环体 (3) while :循环语句的循环条件 (4) break:跳出当前循环 (5) continue:结束当前循环,开始下一轮循环 B条件语句 (1)if: 条件语句 (2)else :条件语句否定分支(与if 连用) (3)goto:无条件跳转语句 C开关语句 (1)switch :用于开关语句 (2)case:开关语句分支 (3)default:开关语句中的“其他”分支 D return :子程序返回语句(可以带参数,也看不带参数) 3 存储类型关键字(4个) (1)auto :声明自动变量一般不使用 (2)extern:声明变量是在其他文件正声明(也可以看做是引用变量) (3)register:声明积存器变量 (4)static :声明静态变量 4 其它关键字(4个): (1)const :声明只读变量 (2)sizeof:计算数据类型长度 (3)typedef:用以给数据类型取别名(当然还有其他作用 (4)volatile:说明变量在程序执行中可被隐含地改变

c++实验2 数据类型与表达式

实验2 数据类型与表达式 实验目的 ●掌握C++语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值 的方法; ●懂得转义字符的使用; ●了解基本数据类型的字节宽度; ●进一步熟悉C++程序的编辑、编译、连接和运行的过程; ●掌握数据的输入输出的方法; ●掌握运算符的优先级和结合性,能够正确书写表达式; ●掌握不同的类型数据之间运算的类型转换规则,理解自动类型转换和会使用强制类型转 换。 实验内容: 1、基本数据类型的长度 验证你的C++编译环境中每个基本数据类型的长度(即在内存空间所占的字节个 数)。用sizeof运算符获取类型或数据的所占字节数。 # include using namespace std; int main() { cout << "字符'a' 所占字节数: " << sizeof('a') << endl; cout << "字符\"a\"所占字节数: " << sizeof("a") << endl; cout << "字符串\"China\" 所占字节数: " << sizeof("China") << endl; cout << "整型常量默认为int,int型所占字节数: " << sizeof(136) << endl; cout << "短整型short类型所占字节数: " << sizeof(short) << endl; cout << "实型常量.23456默认为double类型,double字节数:" << sizeof(1.23456) << endl; cout << "float型数据所占字节数:" << sizeof(float) << endl; cout << "double型数据所占字节数:" << sizeof(double) << endl; cout << "bool型数据所占的字节数:" << sizeof(bool) << endl; return 0; } 1)人工分析程序,写出应得结果,上机后将二者对照。 2)仿照上述程序输出基本数据类型char, short, int, long double, float, double,bool的数据类型长度。 3)为什么字符串长度比总字符个数还要多1? 2、先阅读下列程序,写出执行结果(有些程序可能存在错误,请调试、改正) (1) #include using namespace std; int main()

C语言试题:数据类型、运算符与表达式

3 数据类型、运算符与表达式 一、单项选择题 1、以下选项中,不正确的 C 语言浮点型常量是( C )。 A. 160. B. 0.12 C. 2e4.2 D. 0.0 分析:e 后面的指数必须为整数。 2、以下选项中,( D )是不正确的 C 语言字符型常量。 A. 'a' B. '\x41' C. '\101' D. "a" 分析:在C 语言中,’a ’表示字符常量,”a ”表示字符串。 3、 在 C 语言中,字符型数据在计算机内存中,以字符的(C )形式存储。 A.原码 B.反码 C. ASCII 码 D. BCD 码 分析:将一个字符常量放入一个字符变量中,实际上并不是将字符本身放到内存单元中,而是将字符的对应的ASCII 码放到储存单元中。 4、若x 、i 、j 和k 都是int 型变量,则计算下面表达式后,x 的值是( C )。 x=(i=4,j=16,k=32) A. 4 B. 16 C.32 D.52 分析:(i=4,j=16,k=32)的值为最后一个表达式的值,即为32,所以x=32. 5、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B )。 A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算 C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算 分析:算术运算符包括加法运算“+”符减法运算“-”符乘法运算符“*”以及除法运算符“/”,赋值运算符包括“=、+=、-=、*=、/=、……”,关系运算符包括“<、<=、>、>=”。 6、若有代数式bc ae 3 ,则不正确的C 语言表达式是( C )。 A.a/b/c*e*3 B. 3*a*e/b/c C.3*a*e/b*c D. a*e/c/b*3 分析:C 选项表达的是3ace/b 。 7、表达式!x||a==b 等效于( D )。 A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b) 分析:由符优先级先后顺序在!x||a==b 中应先算“||”再算“!”,最后算“==”。选项B 不影响运算顺序。 8、设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值是( A )。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 分析:先算括号里面的,a 不大于b ,则m=0,c 不大于d ,则n=0. 9、 设有语句 int a=3;,则执行了语句 a+=a-=a*=a;后,变量 a 的值是( B )。 A. 3 B. 0 C. 9 D. -12 分析:从后往前算,a*=a 即a=a*a ,a=9;然后a-=a=9,a=a-9,=0;a+=0,a=a+a=0. 10、在以下一组运算符中,优先级最低的运算符是( D )。

C语言的基本数据类型及其表示

3.2 C语言的基本数据类型及其表示 C语言的基本数据类型包括整型数据、实型数据和字符型数据,这些不同数据类型如何表示?如何使用?它们的数据范围是什么?下面我们分别进行介绍。 3.2.1 常量与变量 1. 常量 常量是指程序在运行时其值不能改变的量,它是C语言中使用的基本数据对 象之一。C语言提供的常量有: 以上是常量所具有的类型属性,这些类型决定了各种常量所占存储空间的大小和数的表示范围。在C程序中,常量是直接以自身的存在形式体现其值和类型,例如:123是一个整型常量,占两个存储字节,数的表示范围是-32768~32767;123.0是实型常量,占四个存储字节,数的表示范围是-3.4 10-38~3.4 1038。 需要注意的是,常量并不占内存,在程序运行时它作为操作对象直接出现在运算器的各种寄存器中。 2.符号常量 在C程序中,常量除了以自身的存在形式直接表示之外,还可以用标识符来表示常量。因为经常碰到这样的问题:常量本身是一个较长的字符序列,且在程序中重复出现,例如:取常数的值为3.1415927,如果在程序中多处出现,直接使用3.1415927的表示形式,势必会使编程工作显得繁琐,而且,当需要把的值修改为3.1415926536时,就必须逐个查找并修改,这样,会降低程序的可修改性和灵活性。因此,C语言中提供了一种符号常量,即用指定的标识符来表示某个常量,在程序中需要使用该常量时就可直接引用标识符。 C语言中用宏定义命令对符号常量进行定义,其定义形式如下: #define 标识符常量 其中#define是宏定义命令的专用定义符,标识符是对常量的命名,常量可以是前面介绍的几种类型常量中的任何一种。该使指定的标识符来代表指定的常量,这个被指定的标识符就称为符号常量。例如,在C程序中,要用PAI代表实型常量3.1415927,用W代表字符串常量"Windows 98",可用下面两个宏定义命令: #define PAI 3.1415927 #define W "Windows 98" 宏定义的功能是:在编译预处理时,将程序中宏定义(关于编译预处理和宏定义的概念详见9.10节)命令之后出现的所有符号常量用宏定义命令中对应的常量一一替代。例如,对于以上两个宏定义命令,编译程序时,编译系统首先将程序中除这两个宏定义命令之外的所有PAI替换为3.1415927,所有W替换为Windows 98。因此,符号常量通常也被称为宏替换名。 习惯上人们把符号常量名用大写字母表示,而把变量名用小写字母表示。例3-1是符号常量的一个简单的应用。其中,PI为定义的符号常量,程序编译时,用3.1416替换所有的PI。 例3-1:已知圆半径r,求圆周长c和圆面积s的值。

C语言的基本数据类型及其表示

3.2C语言的基本数据类型及其表示 C语言的基本数据类型包括整型数据、实型数据和字符型数据,这些不同数据类型如何表示?如何使用?它们的数据范围是什么?下面我们分别进行介绍。 3.2.1常量与变量 1.常量 常量是指程序在运行时其值不能改变的量,它是C语言中使用的基本数据对 象之一。C语言提供的常量有: 以上是常量所具有的类型属性,这些类型决定了各种常量所占存储空间的大小和数的表示范围。在C程序中,常量是直接以自身的存在形式体现其值和类型,例如:123是一个整型常量,占两个存储字节,数的表示范围是-32768~32767;123.0是实型常量,占四个存储字节,数的表示范围是-3.410-38~3.41038。 需要注意的是,常量并不占内存,在程序运行时它作为操作对象直接出现在运算器的各种寄存器中。 2.符号常量 在C程序中,常量除了以自身的存在形式直接表示之外,还可以用标识符来表示常量。因为经常碰到这样的问题:常量本身是一个较长的字符序列,且在程序中重复出现,例如:取常数的值为3.1415927,如果在程序中多处出现,直接使用3.1415927的表示形式,势必会使编程工作显得繁琐,而且,当需要把的值修改为3.1415926536时,就必须逐个查找并修改,这样,会降低程序的可修改性和灵活性。因此,C语言中提供了一种符号常量,即用指定的标识符来表示某个常量,在程序中需要使用该常量时就可直接引用标识符。 C语言中用宏定义命令对符号常量进行定义,其定义形式如下: #define标识符常量 其中#define是宏定义命令的专用定义符,标识符是对常量的命名,常量可以是前面介绍的几种类型常量中的任何一种。该使指定的标识符来代表指定的常量,这个被指定的标识符就称为符号常量。例如,在C程序中,要用PAI代表实型常量3.1415927,用W代表字符串常量"Windows98",可用下面两个宏定义命令: #define PAI3.1415927 #define W"Windows98" 宏定义的功能是:在编译预处理时,将程序中宏定义(关于编译预处理和宏定义的概念详见9.10节)命令之后出现的所有符号常量用宏定义命令中对应的常量一一替代。例如,对于以上两个宏定义命令,编译程序时,编译系统首先将程序中除这两个宏定义命令之外的所有PAI替换为3.1415927,所有W替换为Windows98。因此,符号常量通常也被称为宏替换名。 习惯上人们把符号常量名用大写字母表示,而把变量名用小写字母表示。例3-1是符号常量的一个简单的应用。其中,PI为定义的符号常量,程序编译时,用3.1416替换所有的PI。 例3-1:已知圆半径r,求圆周长c和圆面积s的值。

C语言数据类型及表示范围

C语言各种数据类型在系统中占的字节和取值围 基本类型包括字节型(char)、整型(int)和浮点型(float/double)。 定义基本类型变量时,可以使用符号属性signed、unsigned(对于char、int),和长度属性short、long(对于int、double)对变量的取值区间和精度进行说明。 下面列举了Dev-C++下基本类型所占位数和取值围: 符号属性长度属性基本型所占位数取值围输入符举例输出符举例-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u signed -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u unsigned -- char 8 0 ~ 2^8-1 %c %c、%d、%u [signed] short [int] 16 -2^15 ~ 2^15-1 %hd unsigned short [int] 16 0 ~ 2^16-1 %hu、%ho、%hx [signed] -- int 32 -2^31 ~ 2^31-1 %d unsigned -- [int] 32 0 ~ 2^32-1 %u、%o、%x [signed] long [int] 32 -2^31 ~ 2^31-1 %ld unsigned long [int] 32 0 ~ 2^32-1 %lu、%lo、%lx [signed] long long [int] 64 -2^63 ~ 2^63-1 %I64d unsigned long long [int] 64 0 ~ 2^64-1 %I64u、%I64o、%I64x -- -- float 32 +/- 3.40282e+038 %f、%e、%g -- -- double 64 +/- 1.79769e+308 %lf、%le、%lg %f、%e、%g -- long double 96 +/- 1.79769e+308 %Lf、%Le、%Lg 几点说明: 1. 注意! 表中的每一行,代表一种基本类型。“[]”代表可省略。 例如:char、signed char、unsigned char是三种互不相同的类型; int、short、long也是三种互不相同的类型。可以使用C++的函数重载特性进行验证,如: void Func(char ch) {} void Func(signed char ch) {} void Func(unsigned char ch) {} 是三个不同的函数。

基本数据类型和表达式

第一章 基本数据类型和表达式 C++数据类型 为什么要分数据类型 不同的数据类型存储格式不同。 不同的数据类型所实施的操作不同 C++数据类型 1、整形数据 各种整形数据的基本情况 数据类型 占用字节(跟编译器有关) 数据范围 short 2 bytes -32768~32767 unsigned short 2 bytes 0~65535 int 2bytes(16位机) 4 bytes(32位机) -32768~32767 -(231)~231-1 unsigned int 2bytes(16位机) 4bytes(32位机) 0~65535 0~232-1 long 4bytes -( 231)~231 -1 unsigned long 4 bytes 0~2 32 -1 整形常量 在整形常量后可加修饰符 l 或 L 表示长整型 基本类型 实型(浮点型) 双精度型( double)

十进制整数:以非零的数字开始 123//signed int 65000//unsigned int 123u//unsigned int 123L//singed long int 八进制整数:以零开始 0123=83//unsigned int 011L=9//unsigned long int 十六进制整数:以0X或0x开始 0x123=291//signed int 0X123u=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为十六进制值该值对应的字符

C语言的32个关键字和9种控制语句

C语言的32个关键字和9种控制语句 C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。 1 数据类型关键字(12个): (1) char :声明字符型变量或函数 (2) double :声明双精度变量或函数 (3) enum :声明枚举类型 (4) float:声明浮点型变量或函数 (5) int:声明整型变量或函数 (6) long :声明长整型变量或函数 (7) short :声明短整型变量或函数 (8) signed:声明有符号类型变量或函数 (9) struct:声明结构体变量或函数 (10) union:声明共用体(联合)数据类型 (11) unsigned:声明无符号类型变量或函数 (12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用) 2控制语句关键字(12个): A循环语句 (1) for:一种循环语句(可意会不可言传) (2) do :循环语句的循环体 (3) while :循环语句的循环条件 (4) break:跳出当前循环 (5) continue:结束当前循环,开始下一轮循环 B条件语句 (1)if: 条件语句 (2)else :条件语句否定分支(与if 连用) (3)goto:无条件跳转语句 C开关语句 (1)switch :用于开关语句 (2)case:开关语句分支 (3)default:开关语句中的“其他”分支 D返回语句 return :子程序返回语句(可以带参数,也看不带参数) 3 存储类型关键字(4个) (1)auto :声明自动变量一般不使用 (2)extern:声明变量是在其他文件正声明(也可以看做是引用变量)

C语言基本数据类型及运算题库

第二章基本数据类型及运算 一、选择题 1. 若以下选项中的变量已正确定义,则正确的赋值语句是。 A) x1=26.8%3; B) 1+2=x2; C) x3=0x12; D) x4=1+2=3; 答案:C 2. 设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是。 A) x=x*100+0.5/100.0 B) x=(x*100+0.5)/100.0 C) x=(int)(x*100+0.5)/100.0 D) x=(x/100+0.5)*100.0 答案:C 3. 下列C语言中运算对象必须是整型的运算符是。 A) %= B) / C) = D) *= 答案:A 4. 若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是。 A) 0 B) 0.5 C) 1 D) 2 答案:A 5. 设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y; 的功能是。 A) 把x和y按从大到小排列 B) 把x和y按从小到大排列 C) 无确定结果 D) 交换x和y中的值 答案:D 6. 下列变量定义中合法的是。 A)short_a=1-.le-1; B)double b=1+5e2.5; C)long do=0xfdaL; D)float 2_and=1-e-3; 答案:A 7. 以下4个选项中,不能被看作是一条语句的是。 A) {;} B) a=0,b=0,c=0; C) if (a>0); D) if (b==0)m=1;n=2; 答案:D 8. 设x=1,y=-1,下列表达式中解为8的是。 A)x&y B)~x│x C)x^x D)x<<=3 答案:D 9. 在C语言中不合法的整数是。 A)20 B)0x4001 C)08 D)0x12ed 答案: C 10. 以下选项中不正确的实型常量是 A)2.607E-1 B)0.8103e0.2 C)-77.77 D)456e –2 答案:B) 11.若变量已正确定义并赋值,符合C语言语法的表达式是 A)a=a+7 B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b 答案:B) 12.以下十六进制数中不合法的是 A)oxff B)0Xabc C)0x11 D)0x19

基本数据类型与数值表达式

基本数据类型与数值表达式 一、知识要点 计算机的基本功能是进行数据处理。在C++语言中,数据处理的基本对象是常量和变量。运算是对各种形式的数据进行处理。数据在内存中存放的情况由数据类型所决定。数据的操作要通过运算符实现,而数据和运算符共同组成了表达式。本章是对C++语言中的数据类型、运算符、表达式等内容的全面介绍,要正确理解其特点,并灵活运用,主要掌握以下的知识要点: 1.掌握常量和变量的概念。 2.掌握整型数据和实型数据、字符型数据和字符串型数据的概念和区别。 3.掌握各种类型的变量说明及其初始化。 4.掌握算术运算、关系运算、逻辑运算、赋值运算、逗号运算、条件运算等概念。 5.掌握运算符的优先级、左结合和右结合规则。 6.掌握表达式求值时的自动转换和强制类型转换。 7.掌握自加、自减运算的规则。 8.掌握常用数学函数的功能。 二、例题分析与解答 1.选择题 例题1:运算符+、=、*、>=中,优先级最高的运算符是()。 A.+ B.= C.* D.>= 答案:C 分析:根据C++语言对运算符优先级的规则,以上运算符优先级从低到高的次序为=、>=、+、*。 例题2:下列说法正确的是()。 A.cout<<”\n”是一个语句,它能在屏幕上显示”\n” B.\68代表的是字符D。

C.1E+5的写法正确,它表示余割整型常量。 D.0x10相当于020。 答案:D 分析:分号是语句的已部分,且\n是转义字符;\68代表了八进制的6、8,而八进制中没有数字8;1E+5是实型常量;十六进制的10相当于十进制的16,相当于八进制的20。 例题3:下列不合法的变量名为()。 A.int B.int1 C.name_1 D.name0 答案:A 分析:根据变量名命名要求,变量名只能由大小写字母、数字、下划线组成,且系统关键字不能作为变量名。 例题4:下面正确的为()。 A.4.1/2 B.3.2%3 C.3/2==1 结果为1 D.7/2 结果为3.5 答案:A 分析:%运算符要求式整型;关系运算值为0;两个整数相除,商为为相除后的整数部分。 例题5:已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?++d:a

数据类型及表达式练习题

数据类型及表达式习题 1.选择题 1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为x=(i=4,j=16,k=32) A) 4 B) 16 C) 32D) 52 2.下列四组选项中,均不是C语言关键字的选项是( ) A) define IF type B) getc c har printf C) include case scanf D) while go pow 3.下列四组选项中,均是不合法的用户标识符的选项是( ) A) W P_0 do B) b-a goto int C) float la0 _A

D) -123 abc TEMP 4.下列四组选项中,均是合法转义字符的选项是( ) A) ‘\”’‘\\’‘\n’ B) ‘\’‘\017’‘\”’ C) ‘\018’‘\f’‘xab’ D) ‘\\0’‘\101’‘xlf’ 5.下面正确的字符常量是( ) A) “c”B) ‘\’’C) ‘’D)‘K’ 6.以下叙述不正确的是( ) A) 在C程序中,逗号运算符的优先级最低 B) 在C程序中,MAX和max是两个不同的变量 C) 若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变

D) 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 7.以下叙述正确的是( ) A) 在C程序中,每行只能写一条语句 B) 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 C)在C程序中,%是只能用于整数运算的运算符 D) 在C程序中,无论是整数还是实数,都能被准确无误地表示8.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为( ) A) D B) 68 C) 不确定的值D) C 9.sizeof(float)是( ) A) 一个双精度型表达式B) 一个整型表达式 C)一种函数表达式D) 一个不合法的表达式

C语言数据类型与表达式习题及答案

第一章数据类型,运算符与表达式 一.选择题 1.不合法的常量是A。 A)‘/2’B) “”C)‘’D)“483” 2. B 是C语言提供的合法的数据类型关键字。 A)Float B)signed C)integer D)Char 3.在以下各组标识符中,合法的标识符是(1)A,(2) C ,(3) D 。 (1)A)B01 B)table_1 C)0_t D)k% Int t*.1 W10 point (2)A)Fast_ B)void C)pbl D) Fast+Big abs fabs beep (3)A)xy_ B)longdouble C)*p D)CHAR 变量1 signed history Flaut 4. 不属于合法的C语言长整型常量的是 C 。 A)5876273 B)0L C)2E10 D)(long)5876273 7.下面选项中,均是合法浮点数的是 B 。 A)+1e+1 B)-0.60 C)123e D)-e3 5e-9.4 12e-4 1.2e-.4 .8e-4 03e2 -8e5 +2e-1 5.e-0 8.在C语言中,要求参加运算的数必须是整数的运算符是 C 。 A)/ B)* C)% D) = 9.在C语言中,字符型数据在内存中以 D 形式存放。 A)原码B)BCD码C)反码D)ASCII码10.下列语句中,符合语法的赋值语句是 C 。 A)a=7+b+c=a+7;B)a=7+b++=a+7; C)a=7+b,b++,a+7;D)a=7+b = c=a+7; 11. B 是非法的C语言转义字符。 A)‘\b’B)‘\0xf’C)‘\037’D)‘\’’12.对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中, B 是正确的。 A)语法错误B)f为5.0 C)f为0.0 D)f为2.0 13.与代数式x y u v ? ? 不等价的C语言表达式是A。 A)x*y/u*v B)x*y/u/v C)x*y/(u*v) D)x/(u*v)*y 14.在C语言中,数字029是一个 D 。 A)八进制数B)十六进制数C)十进制数D)非法数 16.对于char cx=?\039?;语句,正确的是A。 A)不合法B)cx的值是?\03? C)cx的值为四个字符D)cx的值为三个字符 17.若int k=7,x=12;则能使值为3的表达式是 D 。 A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5) 18.为了计算s=10!(即10的阶乘),则s变量应定义为 C 。 A)int B)unsigned C)long D)以上三种类型均可

c语言关键字及常用符号

C语言关键字及常用符号 32个关键字 auto :声明自动变量 short :声明短整型变量或函数 int:声明整型变量或函数 long :声明长整型变量或函数 float:声明浮点型变量或函数 double :声明双精度变量或函数 char :声明字符型变量或函数 struct:声明结构体变量或函数 union:声明共用数据类型 enum :声明枚举类型 typedef:用以给数据类型取别名 const :声明只读变量 unsigned:声明无符号类型变量或函数 signed:声明有符号类型变量或函数 extern:声明变量是在其他文件中声明 register:声明寄存器变量 static :声明静态变量 volatile:说明变量在程序执行中可被隐含地改变 void :声明函数无返回值或无参数,声明无类型指针 if:条件语句 else :条件语句否定分支(与 if 连用) switch :用于开关语句 case:开关语句分支 for:一种循环语句 do :循环语句的循环体 while :循环语句的循环条件 goto:无条件跳转语句 continue:结束当前循环,开始下一轮循环 break:跳出当前循环 default:开关语句中的“其他”分支 sizeof:计算数据类型长度 return :子程序返回语句(可以带参数,也可不带参数)循环条件 数据类型 char:字符型 int:基本整型 short int:短整型 long int:长整型

unsigned:无符号型 unsigned long:无符号长整型 float:单精度实型 double:双精度实型 C语言常用转义字符表 转义字符含义ASCII码(16/10进制) \o 空字符(NULL) 00H/0 \n 换行符(LF) 0AH/10 \r 回车符(CR) 0DH/13 \t 水平制表符(HT) 09H/9 \v 垂直制表(VT) 0B/11 \a 响铃(BEL) 07/7 \b 退格符(BS) 08H/8 \f 换页符(FF) 0CH/12 \’单引号27H/39 \”双引号22H/34 \\ 反斜杠5CH/92 \? 问号字符3F/63 \ddd 任意字符三位八进制 \xhh 任意字符二位十六进制 字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。 在C程序中使用转义字符\ d d d或者\ x h h可以方便灵活地表示任意字符。C语言的运算符可分为以下几类: 算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。 关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。 逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。 位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。 赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。 条件运算符:这是一个三目运算符,用于条件求值(?:)。

数据类型、运算表达式

第二章数据类型、运算符与表达式 【章节计划】 【目的要求】 1.了解程序设计概述及C语言的数据类型分类 2.理解变量和常量的相关概念及分类。 3.掌握在C语言中字符型数据的定义及使用,算术运算符 及表达式的使用。 4.掌握在C语言中的特有的运算和运算符的使用,赋值运 算符运算符及表达式的使用。 【教学重点】1、变量和常量的相关概念及分类。 2、C语言中字符型数据的定义及使用,算术运算符及表 达式的使用。 3. C语言中的特有的运算和运算符的使用。 【教学难点】1、C语言中的特有的运算和运算符的使用。 2、赋值运算符运算符及表达式的使用。 【教学内容】 2.1 程序设计概述 2.2 C语言的数据类型 2.3 常量和变量 2.4 整型数据 2.5 实型数据

2.6 字符型数据 2.7 算术运算与算术表达式 2.8 赋值运算与赋值表达式 2.9 C语言特有的运算和运算符 【学时分配】§2-1 ~§2-5 2学时 §2-6 ~§2-9 2学时 实验4学时 习题2学时 共计:10学时

第2章数据类型、运算符与表达式(第二讲) 【课题】:数据类型、运算符与表达式(一) 【目的与要求】:1.了解程序设计概述及C语言的数据类型分类, 2.理解变量和常量的相关概念及分类。 【教学重点】常量和变量数据类型的定义及使用 【教学难点】C语言整型、实型数据类型的定义方法 【教学方法】:引导讲解式 【教具】:电子课件、turboc2.0 【学时分配】:两学时 讲授90分钟 小结10分钟 【课型】:理论教学 【参考资料】谭浩强主编《C程序设计》,清华大学出版社,1999 徐建民主编《C语言程序设计》,电子工业出版社,2002 【后记】 【审批】

C语言数据类型及转换23页word文档

C语言的数据类型 C语言提供的数据结构,是以数据类型形式出现的。具体分类如下:1.基本类型 分为整型、实型(又称浮点型)、字符型和枚举型四种。 2.构造类型 分为数组类型、结构类型和共用类型三种。 3.指针类型。在第9章中介绍。 4.空类型 C语言中的数据,有常量和变量之分,它们分别属于上述这些类型。本章将介绍基本类型中的整型、实型和字符型三种数据。 2.3 常量和变量 2.3.1 常量 1.常量的概念 在程序运行过程中,其值不能被改变的量称为常量。 2.常量的分类 (1)整型常量 (2)实型常量 (3)字符常量。 (4)符号常量。 常量的类型,可通过书写形式来判别。 2.3.2 变量 1.变量的概念

在程序运行过程中,其值可以被改变的量称为变量。 2.变量的两个要素 (1)变量名。每个变量都必须有一个名字──变量名,变量命名遵循标识符命名规则。 (2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。 3.标识符命名规则 (1)有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。 (2)有效长度:随系统而异,但至少前8个字符有效。如果超长,则超长部分被舍弃。 例如,由于student_name和student_number的前8个字符相同,有的系统认为这两个变量,是一回事而不加区别。 在TC V2.0中,变量名(标识符)的有效长度为1~32个字符,缺省值为32。 (3)C语言的关键字不能用作变量名。 注意:C语言对英文字母的大小敏感,即同一字母的大小写,被认为是两个不同的字符。 习惯上,变量名和函数名中的英文字母用小写,以增加可读性。 思考题:在C语言中,变量名total与变量名TOTAL、ToTaL、tOtAl等是同一个变量吗? 标识符命名的良好习惯──见名知意:

实验数据类型与表达式

实验 2 数据类型与表达式 实验目地 掌握C++语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值地方法; 懂得转义字符地使用;了解基本数据类型地字节宽度;进一步熟悉C++程序地编辑、编译、连接和运行地过程;掌握数据地输入输出地方法; 掌握运算符地优先级和结合性,能够正确书写表达式;掌握不同地类型数据之间运算地类型转换规则,理解自动类型转换和会使用强制类型转换. 实验内容: 1、基本数据类型地长度 验证你地C++编译环境中每个基本数据类型地长度<即在内存空间所占地字节个 数) . 用sizeof 运算符获取类型或数据地所占字节数. b5E2RGbCAP # include usingnamespace std 。 int main(> { cout << " 字符'a' 所占字节数: " << sizeof ('a' > << endl 。 cout << "字符\"a\" 所占字节数:"<< sizeof("a"> << endl。 cout << " 字符串\"China\" 所占字节数: " << sizeof ("China" > << endl 。p1EanqFDPw cout << " 整型常量默认为int,int 型所占字节数: " << sizeof (136> << endl 。DXDiTa9E3d cout << "短整型short 类型所占字节数:"<< sizeof (short > << endl。RTCrpUDGiT cout << " 实型常量.23456 默认为double 类型,double 字节数:" << sizeof (1.23456> << endl 5PCzVD7HxA cout << "float 型数据所占字节数:" << sizeof (float > << endl 。 cout << "double 型数据所占字节数:" << sizeof (double > << endl 。jLBHrnAILg cout << "bool 型数据所占地字节数:" << sizeof (bool > << endl 。return 0 。 } 1)人工分析程序,写出应得结果,上机后将二者对照. 2)仿照上述程序输出基本数据类型char, short, int, long double, float, double, bool 地数据类型长度. xHAQX74J0X 3)为什么字符串长度比总字符个数还要多1? 2、先阅读下列程序,写出执行结果( 有些程序可能存在错误,请调试、改正> #include using namespace std

相关文档
最新文档