C语言入门基础--数据类型(基本数据类型)、类型转换(自动转换、强制转换)
数据类型
数据类型就是用来声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储在内存中占用的空间。
数据类型分为
基本数据类型/算数类型:数值类型(整数类型,浮点型),字符型char
构造数据类型:数组、结构体、共用体、枚举
指针类型
void类型(空类型)void
基本数据类型
我们常用的数字有整数和小数。所以基本数据类型类型又分为了整数类型即整型(当然这里的整型不是韩国的整形)和浮点类型即浮点型;
注意,各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。
整型
数据类型 | 占用大小 |
---|---|
short 短整型 | 2 字节 取值范围:-32,768 到 32,767 |
int 整型 【常用】 | 2或4个字节(一般都占用2个字节) 取值范围:-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
long 长整型 | 4 字节 取值范围:-2,147,483,648 到 2,147,483,647 |
其实char也是int类型,在计算机中,字符也是通过对照ACILL表的int数值转换的。
想知道ACILL表是啥自己百度
字符型
数据类型 | 占用大小 |
---|---|
char 字符型**【常用】** | 1字节 取值范围:(-128 到 127 或 0 到 255) |
因为-128 到 127 或 0 到 255也在int【-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 】的取值范围之内,所以在小于127大于-128的范围里的时候 int可以和char类型相互转换对应的字符
浮点类型
数据类型 | 占用大小 |
---|---|
float 单精度浮点 【常用】 | 4 字节 取值范围(1.2E-38 到 3.4E+38 )6 位小数 |
double 双精度浮点 【常用】 | 8 字节 取值范围 (2.3E-308 到 1.7E+308 )15 位小数 |
long double | 16 字节 取值范围(3.4E-4932 到 1.1E+4932 )19 位小数 |
计算某个变量在特定平台上的准确大小
使用sizefof运算符
#include <stdio.h> #include <limits.h> int main() { //表达式 sizeof(type) 得到对象或类型的存储字节大小。 printf("int 存储大小 : %lu \n", sizeof(int)); //%lu 为 32 位无符号整数 return 0; }
类型转换
自动类型转换
C 语言中如果一个表达式中含有不同类型的常量和变量,在计算时,会将它们自动转换为同一种类型;
int i = 5.5; /*这里的5.5默认是double类型, 通过C的自动转换机制,会摄取掉小数部分,只保留整数部分*/
自动转换规则:
浮点数赋给整型,该浮点数小数被舍去; 例:int a = 1.2; //这里的.2会被舍去 只会保留整数部分
整数赋给浮点型,数值不变,但是被存储到相应的浮点型变量中; 例 float b = 5; //这里的 5 会被转换成5.0 作为浮点型存储在内存里
强制类型转换
使用(),在括号里填写需要转换的类型
使用基本数据类型的时候注意,从大范围强制转换为小范围会存在内存溢出的现象
#include <stdio.h> int main () { float f,x=3.6,y=5.2; int i=4,a,b; a=x+y; b=(int)(x+y);//(x+y)是浮点型 这里会强制转换为int型 f=10/i; printf("a=%d,b=%d,f=%f,x=%f\n",a,b,f,x); return 0 ; }
C中的“布尔类型”
在C语言里,是没有bool类型的,所以 C 语言判断真假时以 0 为假,非 0 为真(一般用1)。
C99 提供了 _Bool 型,所以布尔类型可以声明为 _Bool flag。
_Bool 依然仍是整数类型,但与一般整型不同的是,_Bool 变量只能赋值为 0 或 1,非 0 的值都会被存储为 1。
C99还提供了一个头文件 <stdbool.h> 定义了 bool 代表 _Bool,true 代表 1,false 代表 0。
只要导入 stdbool.h ,就能非常方便的操作布尔类型了
#include <stdio.h> //导入 stdbool.h 来使用布尔类型 #include <stdbool.h> //计算n!,n的值在main中定义 int main () { int n = 10; //计算叠乘数 int sum = 1; //用来存放叠乘的结果 bool flag = false; //叠乘标记 int num = n; //循环次数 while( !flag ) { sum = sum * (num--); //当num=1时结束循环 if( num == 1) { flag = true; } } printf ("%d的叠乘值为 %d \n", n, sum); return 0; }
- 点赞
- 收藏
- 分享
- 文章举报
- 13.java语言基础-基本类型的自动转换强制转换
- 10_基本数据类型自动转换_强制转型_类型提升问题
- java语言基础(59)——jdk5自动装箱和拆箱(基本数据类型与包装类之间的转换)
- java学习之旅10--基本数据类型自动转换_强制转型_类型提升问题
- OC基础:OC 基本数据类型与对象之间的转换方法
- java基础(3)——八大基本数据类型和类型转换,以及运算符用法
- 【Java基础之数据类型转换】数据类型自动转换和强制转换、及相关常见面试题(如return (short)x / y* 2; 的返回类型)
- javaSE基础知识——day14 Arrays类的概述和方法使用、基本类型包装类、Integer类、String和int类型的相互转换、自动装箱和拆箱
- Java基础之基本数据类型转换
- JAVA基础初探(一)核心概念(JVM,JDK,JRE)、流程控制语句、基本数据类型、关键字、标识符、常量与变量、类型转换、Debug处理
- JAVASE基础_02.基础语法--基本数据类型转换
- Python基本语法_强制数据类型转换
- 黑马程序员---java基础加强---基本数据类型的自动拆装箱
- java基本数据类型与字符串之间的转换(基本数据类型、对象封装类、自动装箱、自动拆箱)
- Python知识点(1)python基础 强制数据类型转换 小总结
- java基本数据类型自动转换
- Java基础教程之基本类型数据类型、包装类及自动拆装箱
- Java数据类型的转换——————隐式(自动)转换与强制转换
- Objective-C中基本数据烦类型与对象数据类型相互转换的方法(OC中NSString的常用API的基础应用3)
- Python基本语法_强制数据类型转换