c语言学习之变量及基本数据类型转换

本文介绍了C语言中的变量概念,包括变量的声明与使用,强调了变量未声明会导致的错误。讲解了基本数据类型,如整型、浮点型以及它们的字节大小和精度特点,并探讨了数据类型的自动转换和强制转换规则。举例展示了不同类型数据混合运算时的转换原则,以及可能存在的精度损失问题。最后,提到了bool类型在C++中的应用。
摘要由CSDN通过智能技术生成

变量

1.变量是程序的基本组成单位
2.变量的定义:变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。
3.变量一定要先声明在使用,否则会报错。
先定义在调用才不会出错
4.[Error] ‘a’ undeclared (first use in this function)
错误‘a’未声明(在此函数中首次使用)

#include <stdio.h>
void main(){		
	int a=1;//定义一个整型变量a,并赋值为1 
    int b=2;//定义一个整型变量b,并赋值为2
//    b=3;//给变量b赋值为3 
    printf("a=%d \n",a);//使用输出语句,把变量a的值输出%d(%d表示整形) 
	printf("b=%d \n",b);//使用输出语句,把变量b的值输出%d(%d表示整形)
	
    getchar();//让控制台不退出 
}

在这里插入图片描述
5.变量输出按最后一个赋值输出

#include <stdio.h>
void main(){		
	int a=1;//定义一个整型变量a,并赋值为1 
    int b=2;//定义一个整型变量b,并赋值为2
    b=3;//给变量b赋值为3 
    printf("a=%d \n",a);//使用输出语句,把变量a的值输出%d(%d表示整形) 
	printf("b=%d \n",b);//使用输出语句,把变量b的值输出%d(%d表示整形)
	
    getchar();//让控制台不退出 
}

在这里插入图片描述
6.变量赋值或者改变赋值的时候要给相对应的值,比如int整型就不能赋值小数,否则可能会有数据丢失。(如下图3.4输出后变成3,小数部分丢失)
在这里插入图片描述
7.输出:
1)如果输出的整数%d
2)如果输出的是小数%f,如果希望保留小数点%.2f
3)如果输出的是字符%c
4)如果输出的是字符串%s
5)在输出不同数据时,对应的格式化的形式要对应起来

补:long类型输出%ld
在这里插入图片描述

基本数据类型

c语言包含的数据类型(变量的基本类型)
在这里插入图片描述
1.注意:在c中,没有字符串类型,使用字符数组表示字符串。

2.查看字节数
3.c语言的整型类型,分为有符号signed和无符号unsigned两种,默认是signed

#include<stdio.h>
void main(){
	printf("int的字节数=%d",sizeof(int));
	getchar(); //让控制台不退出
}

在这里插入图片描述
4.float和double型

#include<stdio.h>
void main(){
	//浮点数常量默认类型是double型,声明float型常量时后面必须加'f'或'F'
	float d1=1.1;//有可能从double到float截断,1.1是double 
	float d2=1.3f; //1.1f就是float 
	double d3=1.3;
	double d4=5.12;
	double d5=.512;//等价于0.512
	double d6= 5.12e2;//等价于5.12*(10^2)=512
	double d7=5.12e-2;//等价于5.12*(10^-2)=0.0512 
	printf(" d1=%f\n d2=%f\n d3=%f\n d4=%f\n d5=%f\n d6=%f\n d7=%f\n",d1,d2,d3,d4,d5,d6,d7); 
	getchar();
}

在这里插入图片描述
1)当d1的数值超过float的精度就会被截断,会发生数据丢失(double可以输出15到16位,float只能输出6到7位)
在这里插入图片描述
当让float输出超过范围小数就会失去精度
在这里插入图片描述

5.bool型
#include<stdbool.h>bool类型标签库(bool类型只有c++才有)

基本数据类型转换

数据类型自动转换:c程序在运行时,精度小的被自动转成精度大的,这就是自动类型转换

精度从低到高顺序
short --> int --> unsigned int无符号整形 --> long --> unsigned long无符号长整型 --> float --> double --> long double

基本数据类型自动转换规则
在这里插入图片描述
说明:1.有多种数据类型在混合运算时,要先将所有数据类型转换成最大的那一种,在进行运算。
2.两种类型的字节数不同,转换成字节数大的类型。
3.两种类型的字节数相同,但一种有符号,一种无符号,则转换成无符号类型。
4.在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边的类型将转换为左边的类型,如果右边变量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。

1.例如:当int型和float型相加时,int型就要转成float型(如图一)。如果不转换按int输出,就会有数据丢失(如图二)。
图一
图一

#include<stdio.h>

int main(){
	int a = 1;
	float b = 1.55;
	float c = a + b;
	printf ("%f",c);
	return 0;
}

图二
图二

4.列如:将double类型的值给float类型,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入(如果double类型的数据没有超过float类型的精度就不会有数据丢失)。
在这里插入图片描述
强制转换:
当进行数据的从精度高——>精度低,就需要使用到强制转换(不加强制转换可能会报错)
强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级

强制转换符():只对最近的字符操作有效

加强制转换前
在这里插入图片描述
[Error] expected expression before ‘int’
[错误]“int”之前的预期表达式

加强制转换后
在这里插入图片描述
强制转换符():只对最近的字符操作有效
在这里插入图片描述
这里只对3.5起强制转换作用,所以num1 = 3 * 10 + 6 * 1.5 即num = 39


将式子整个括起来后就是将结果强制转换

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值