day04 数据类型与运算符

数据类型与运算符

一、数据类型

C语言32个关键字

duto	break	case	char	const
continue	default		do		double
else	enum	extern		float	for
goto	if		int		long	register
return	short	signed	sizeof	static	
struct	switch	typedef	unsigned	union
void	volatile	while

九种控制语句

if()~else~
for()~
while()~
do~while()
continue
break
swich
goto
return

34种运算符

二、数据类型的定义

1、数据类型的定义

变量的定义:数据类型 变量名【标识符】 
	变量的赋值:变量名 = 值;
	数据类型 变量名【标识符】 =

2、标示符的命名规则:

	1、字母、数字、下划线
	2、不能以数字开头
	3、见名知义
	4、不能和同一函数内的其他标示符重复
	5、不能使用C语言关键字
	6、区分大小写

3、常量的定义:

1、const 数据类型 常量名
	2、【宏定义】#deifne 常量名 值
	注意:
	1、通过#define 定义的常量 是根据值来匹配数据类型的
	2、const 修饰的常量是不安全 可以通过指针来修改

4、各数据类型占的内存大小(32位操作系统下)

sizeof()			//求出数据类型在内存中占的大小(Byte)
	int value = sizeof(变量名)
	int value = sizeof(数据类型)
	int value = sizeof 数据类型
	

	char【字符型】						1
	short【短整型】						2
	int【整型】 							4
	long【长整型】						4
	float【单精度浮点型】 				4
	long long【长长整型】				8
	double【双精度浮点型】				8

三、进制

1.十进制转二进制

除二反序取余法:将十进制数每次除以2 取出余数 按照结果倒叙依次获取结果

2.进制在程序中打印:

int a=10;//十进制中的10
int b=010;//八进制中的10 在程序中定义一个八进制数需要在数前面加上0区分
int c=0x10;//十六进制中的10在程序中定义一个十六进制数需要在数前面加上0x区分
int d=0X10;//十六进制中的10在程序中定义一个十六进制数需要在数前面加上0X区分
注意:在程序中没有办法表示一个二进制数
%u 将数据按照无符号十进制整数输入或输出	
%d 将数据按照十进制输出
%o 将数据按照八进制输出
%x 将数据按照十六进制小写输出
%X 将数据按照十六进制大写输出

3.原码、反码、补码

一个有符号的整型数据可以分为两部分:一部分是符号位、一部分是数字位

无符号数据类型只包含数字位部分

signed int a= 1986(有符号标识 signed可以不用写) 
二进制:11111000010

1986原码:0000 0000 0000 0000 0000 0111 1100 0010
-1986原码:1000 0000 0000 0000 0000 0111 1100 0010

1986反码: 0000 0000 0000 0000 0000 0111 1100 0010
-1986反码:1111 1111 1111 1111 1111 1000 0011 1101

1986补码: 0000 0000 0000 0000 0000 0111 1100 0010
-1986补码:1111 1111 1111 1111 1111 1000 0011 1110
1986 - 1986:1 0000 0000 0000 0000 0000 0000 0000 0000
//溢出:在数据进行操作的时候会导致超出数据类型大小,会向前位进1,多于原始数据类型大小,会被系统自动舍弃 保留从后面开始数据类型大小的位数  

//正数原码反码补码相同
//负数原码最高位变为1
//负数反码,其原码最高位不变,其余位取反
//负数补码是其反码加1
 

练习:用生辰年份年去生辰日期
1992
-326
1、将10进制转化为二进制
     1992 :0000 0000 0000 0000 0000 0111 1100 1000
     -326 :0000 0000 0000 0000 0000 0001 0100 0110
2、加符号位将数据变为原码
     1992 :0000 0000 0000 0000 0000 0111 1100 1000
     -326 :1000 0000 0000 0000 0000 0001 0100 0110
3、转化为反码
     1992 :0000 0000 0000 0000 0000 0111 1100 1000
     -326 :1111 1111 1111 1111 1111 1110 1011 1001
4、将反码+1转化为补码
     1992 :0000 0000 0000 0000 0000 0111 1100 1000
     -326 :1111 1111 1111 1111 1111 1110 1011 1010
5、计算补码
     1992 :0000 0000 0000 0000 0000 0111 1100 1000
     -326 :1111 1111 1111 1111 1111 1110 1011 1010
     结果  :  1 0000 0000 0000 0000 0000 0110 1000 0010
6、将数据转化为10进制
110 1000 0010
2+128+512+1024 = 1666

四、输出和输入

输出字符的两种方式:
	1、printf("%c",变量|ASC码)
	2、putchar(字符|变量|ASC码)
		putchar(a)
	输入字符的两种方式:
	1、scanf("%c",&变量)
	2、getchar(字符|变量|ASC码)
		a = getchar()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值