c程序设计语录之基本数据类型与表达式

3.1数据类型分类

数据类型分为基本类型{ 整型(short、int、long、long long 、unsigned)、浮点型(float、double、long double)、字符类型 }、构造类型、指针类型、空类型

3.2整型数据

一字节八位
short(2字节)、int(4字节)、long (4字节)、 long long(8字节)
注:如果编译器不支持c99标准,则不能使用双长整型(long long)

一、整型数据是没有小数部分的数值,在c语言中有三种形式表示
1、十进制
2、八进制,以0开头,例如 0123,表示八进制整数123,十进制形式为83
3、十六进制,以0x开头,例如 0x2F,表示十六进制整数2F,十进制形式为47

二、数据在内存中以二进制形式存储的

三、整型数据以补码的形式进行存储
正数的补码和原码相同,负数的补码等于该数的绝对值的二进制形式按位取反加1
如果是有符号的整数,左边第一位表示符号位,0表示正,1表示负

四、关于整型数据的溢出问题
2的16次方为65536

# include <stdio.h>
void main()
{
	short int a,b;/*短整型2个字节,取值范围为-32768-32767*/
	a = 32767;
	b = a + 1;
	printf("%d\n",b);/*结果b等于-32768*/
}

3.3浮点型数据

一、两种表示形式
1、十进制小数形式
2、指数形式,例如 0.345e3 表示0.345 X 10的3次方
注意:
字母e之前的小数部分中,小数点左边有且只有一位非0数字
e之前必须有数字,e之后的指数必须为一个整数

二、浮点类型数据的分类(不可用signed、unsigned修饰)
单精度型(float 4字节 有效数字6-7)、双精度型(double 8字节 有效数字15-16)、长双精度型(long double 16字节 有效数字18-19)

3.4字符型数据

分为字符和字符串两种,都是1个字节

转义字符
用反斜杠(\)开头引导的字符为转义字符
例如:
\ddd 表示1-3为八进制所表示的字符
\xhh 表示1-2为十六进制所表示的字符

3.5常量与变量

一常量
1、整型常量

2、实型常量(浮点型常量)

3、字符常量
单引号‘’包含的一个字符

4、字符串常量

5、符号常量
定义格式为 # define pi 3.14159

# define min 10
# define max 59

二、变量
1、标识符
由大小写字母、数字、下划线’组成,不能以数字开头,且区分大小写的

int i,k,j;
float x,y;
char c1,c2;

例:整型变量和字符变量的定义和赋值

# include <stdio.h>
int main()/*int 表示这个函数返回的数据类型是int型*/
{
	int x = 10,y;
	char c1 = 'a',c2;
	y = x + 10;
	c2 = c1 -32;
	printf("%d,%c\n",y,c2);
	return 0;
}

二、变量数据类型的转换
1、自动转换
(1)若参与的类型不同,先转为同一类型
(2)按长度增加的方向进行转换,以保证进度不丢失,如int和long类型进行运算,则先把int转换为long再计算
(3)所有浮点运算都以双精度进行计算
(4)char型和short型进行运算时,必须先转为int型
(5)赋值运算中,两边类型不同时,右边类型转换为左边类型,丢失的部分按四舍五入向前舍入

例:

# include <stdio.h>
# define PI 3.14159
void main()
{
	int s,r = 5;
	s = r * r * PI;
	/*右边转换为double型计算,结果为double型,但由于s是整型,故赋值结果为整型,舍去小数部分*/
	printf("%d\n",s);
}

2、强制转换
一般形式为:(类型说明)(表达式)

注意:无论是自动转换还是强制转换,都是为了本次运算而进行的临时性转换,除了本次运算,该怎样还是怎样

3.6运算符和表达式

优先级
! > 算术运算符 > 关系运算符 > && 和 || > 赋值运算符

一、算术运算符和算术表达式

注意:除法运算符“/”,参与运算均为整型,则结果为整型,去掉小数部分,如果运算量有一方为实型,则结果为双精度实型。

自增,自减运算符
只能作用于变量,不能用于常量或表达式,并且只能用于整型常量,例如6++,x-- 都是错误的。

# include <stdio.h>
void main()
{
	int i = 8;
	printf("%d\n",++i);/*9*/
	printf("%d\n",--i);/*8*/
	printf("%d\n",i++);/*8*/
	printf("%d\n",i--);/*9*/
	printf("%d\n",-i++);/*-8*/
	printf("%d\n",-i--);/*-9*/
}

二、关系运算符和关系表达式
关系运算的值为1(表示逻辑真),为0(表示逻辑假)
<、<= 、>、 >=优先级高于 == 、!=20

三、逻辑运算符和逻辑表达式

在c语言中进行逻辑判断时,数据的值为非0,则认为逻辑真,数据的值为0,则认为逻辑假
1、逻辑非(!)
后面的操作数的值为0(逻辑假),则运算结果为1(逻辑真)

2、逻辑与(&&)
若参与运算的两个操作数的数值均为1(逻辑真),则结果为1(逻辑真),否则为0(逻辑假),有一假就为假

3、逻辑或(||)
若参与运算的两个操作数的值均为0(假),则结果为0(假),有一真就为真

# include <stdio.h>
void main()
{
	int a = 1,b = 5,y1,y2,y3,y4,y5;
	y1 = !b;/*0*/
	y2 = !(a > b);/*1*/
	y3 = a && b;/*1*/
	y4 = (a > b) && (a > 0);/*0*/
	y5 = a || b;/*1*/
	
}

注意,在逻辑表达式的运算过程中,并不是所有的逻辑运算都要被执行
(1)a && b && c,只有a为真时,才需要判断b的·值,只有a && B的值为真时,才需要判断c的值
(2)a || b || c,只要a为真,就不必判断b和c的值,只有a为假才判断b的值,只有a和b都为假才判断c的值

四、条件运算符和条件表达式

三目运算符
<表达式1> ? <表达式2> : <表达式3>
先求表达式1,若结果为真(非0值),则求表达式2的值并作为整个表达式的值;
若结果为假(0值),则求表达式3的值并作为整个表达式的值。

条件运算符的优先级高于赋值运算符

五、逗号运算符和逗号表达式

一般形式为:表达式1,表达式2;
求解过程为,先求出表达式1,再求表达式2,整个表达式的值为表达式2的值。

# include <stdio.h>
void main()
{
	int x = 5,y,z;
	y = ( x + 5,x + 1);
	z = x + 5,x + 1;
	printf("%d,%d,%d\n",x,y,z);/*x = 5,y = 6,z = 10*/
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值