C语言学习:2、数据类型

前面的一课有说到:

        打印字符串,用%s

        打印整型数据,用%d

        打印浮点型数据,用%f

什么是整型(%d)

        不带小数点的数据类型,如1、-1、0、22、100、9999等

什么是浮点类型(%f)

        就是带小数点的类型,如0.18、0.55、 0.0、 0.3、 -0.6等

什么是字符类型(%c)

        用单引号包起来的字母和符号就是字符类型,如'F' 、'\r'、 '\n'等 

下面的代码可以编译打印,看下打印的内容:

程序示例1:

#include <stdio.h>

int main()
{
	printf("%d\n", 2);

	printf("%f\n", 2.0);

	printf("%c\n", '2');
	
	return 0;
}

数据类型的细分

整型类型还可以细分为:

        short类型:-32768--32767

        int类型:-2147483648---2147483647

浮点类型还可以细分为:

        float类型:-3.4*10^38 ---- 3.4*10^38

        double类型:-1.7*10^-308-----1.7*10-308

数据类型的细分,好比生活中的各种分类。本来大家都是人,某些组织根据资产的多少将人划分为穷人、中产阶级、富人,钱少的就是穷人,钱多的就是富人。

所以数据类型就是表示数据的范围。

变量

什么是变量

        就是可以改变的量,

变量命名规则

        变量是一个量,那就应该有个名字,但是名字也不能乱取,有一定的规则:

        1、变量名由字母、数字、或下划线构成;

        2、变量的第一个字符必须是字母或者下划线;

        3、大写字母跟小写字母是不一样的东西;

所以,正确的变量名可以是这样的,注意 单独一个下划线也可以是变量名

abc

Abc

ABC

abc1

a_bc

a_bc1

_abc

_abc1

—

如何改变变量的值

        32767还是属于short类型的整型数据,而32768就不属于short 类型的整型数据了,而是属于int类型的整型数据。就好比,都是水杯,也要分个大水杯和小水杯,大水杯盛的水比小水杯多。比如容量超过32767mL的杯子就是大水杯,不超过的就是小水杯,把32768mL的水倒入小水杯中肯定不合适,会漫出来,这个漫出来就叫溢出。

        水杯是一个变量,可以给它起个名字叫cap_1,而且它是一个小水杯,给它盛1000ml的水,用代码可以这样表示:

程序示例1

short cap_1;//定义一个short类型的变量
cap_1 = 1000; //给变量赋值1000

C语言的初学者需要注意的是  = 并不是数学里面的等于号,而是赋值符号

C语言中的等于号用 ==表示。

赋值与初始化

赋值:先创建一个变量,然后给这个变量指定一个值,这个过程叫赋值;

初始化:在创建变量的时候,就有一个值。

赋值就好比空手去城市打工,你没有钱,你妈给了你100块,这个时候你就有100块钱了,这个钱是你妈赋予你的,这个过程叫赋值。

初始化就好比,有的人出生在皇家,刚一出生他就是贵族,没有谁给他东西,娘胎里带来的。

所以,从娘胎里带来的叫初始化,后面挣来的叫赋值。

用C语言代码表示:

程序示例2:

int  cap_1 = 10000;//cap_1的初始化值为10000

short cap_2;
cap_2 = 1000; //给cap_2赋个值1000

通过一个简单的例子来看下赋值与初始化的相关运行规则

程序示例3:

#include <stdio.h>

int main()
{
	int a; //定义一个int型的整型变量a
	int b = 2; //定义一个int型的整型变量b,并初始化为2
	int c; //定义一个int型的整型变量c

	a = 1; //给变量a赋值1
	c = a + b; //将a与b的和赋值给c

	printf("c = %d",c); //打印c的值

	
	return 0;
}

打印的结果应该是 c = 3。

C语言中的一些潜规则

1、有些数据出现在C语言程序中,你没有给他定义类型,程序会给他一个默认的类型,

        比如:3 默认为int型,0.3默认为double型,'c'默认为char类型

2、你也可以指定类型    

        比如在0.3后面加个f, 变成0.3f,此时这个0.3就表示float类型

3、大类型的数据赋值给小类型的数据可能会溢出(大杯子忘小杯子里倒水,可能会溢出)

4、小类型的数据可以正常的给大类型的数据赋值(小杯子忘大杯子里倒水是安全的)

5、浮点型数类型数据给整型变量赋值,小数点后面的会被抹掉;

6、整型数据给浮点型变量赋值,可以正常进行。

        看看程序实例4和5,示例4可以正常输出,但是示例5输出的结果就是很意外了。大杯子的水忘小杯子里面倒,如果大杯里面的水本来就少,那自然美问题,如果大杯子的水很多,小杯子装不下,会出现什么结果?当然会溢出了,溢出结果就出错了。浮点型数据的运算也是同样的道理。

程序示例4(正常运行)

#include <stdio.h>

int main()
{
	int a = 10000; //定义一个int型的整型变量a
	short b ; //定义一个int型的整型变量b,并初始化为2

	b = a;

	printf("b = %d", b);
	return 0;
}

程序示例5(异常运行)

#include <stdio.h>

int main()
{
	int a = 50000; //定义一个int型的整型变量a
	short b ; //定义一个int型的整型变量b,并初始化为2

	b = a;

	printf("b = %d", b);
	return 0;
}

程序示例6:(异常运行)


#include <stdio.h>

int main()
{
	float a = 3.14; //定义一个int型的整型变量a
	int b ; //定义一个int型的整型变量b,并初始化为2

	b = a;

	printf("b = %d", b);
	return 0;
}

程序示例7:(正常运行)

#include <stdio.h>

int main()
{
	int a = 50000; //定义一个int型的整型变量a
	float b ; //定义一个int型的整型变量b,并初始化为2

	b = a;

	printf("b = %f", b);
	return 0;
}

数据类型的转换

字面量数据类型准换

程序示例8:

#include <stdio.h>

int main()
{
	float a = 2; 

	printf("a = %f", a);
	return 0;
}

输出的结果为 a = 2.000000,将字面量2转化为浮点型

强制类型转换

type 变量 = (type)数值

程序示例9:

#include <stdio.h>

int main()
{
	int a = (int)3.14; //将3.14强制转换成int型,就变成3了
	float b = (float)3; //jiang 3强制转换成float,就变成3.000000了

	printf("a = %d\n", a);
	printf("b = %f\n", b);
	return 0;
}

强制类型转换会存在一定的风险,非必要不使用。

交换变量的值

变量的值交换等同于交换两个水杯里面的饮料,水杯cap_1里面装的是可乐,水杯cap_2里面装的是雪碧,怎么交换,当然需要第三者参与了,再拿一个空杯子cap_3,步骤如下:

1、将cap_1里面的可乐倒入空杯cap_3,cap_1空了

2、再把cap_2里面的雪碧倒进cap_1里面,cap_2空了

3、再将cap_3中的可乐倒入cap_2中,交换结束

//交换变量a和b的值
int a = 2; 
int b = 3;

交换步骤:

1、定义一个新的变量 int c

2、将变量b的值赋给变量c;

3、将变量a的值赋给变量b;

4、将变量c的值赋值给变量a,交换完成

程序示例10:

#include <stdio.h>

int main()
{
	int a = 2; 
	int b = 3;
	int c; //定义一个新的变量c

	c = b; //把b的值赋给c
	b = a; //把a的值赋给b
	a = c; //把c的值赋给a

	printf("a = %d\n", a); //打印a
	printf("b = %d\n", b); //打印b

	return 0;
}

浮点数四舍五入

我们知道将浮点型数强制转换成整数的操作是直接把小数点后面的东西都抹掉,那肯定不是四舍五入,只能加一些手段:

1、如果小数部分≥0.5,再加上0.5,那么结果就≥1;

2、如果小数部分<0.5,再加上0.5,那么结果<1;

3、相加的部分再舍弃小数部分(强制类型转换,浮点型转位整型),就是四舍五入的结果了

程序示例11:

#include <stdio.h>

int main()
{
	float A ,B;
	float a = 3.4;
	float b = 3.6;
	
	A = a + 0.5;
	B = b + 0.5;
	A = (int)A;
	B = (int)B;

	printf("A = %f\n", A);
	printf("B = %f\n", B);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值