C语言数据类型及运算符

本文介绍了C语言中的数据储存单位,如比特、字节等,并详细讲解了数据类型,包括整型(有符号、无符号)、浮点型、字符型和布尔型。还讨论了变量和常量的概念,以及变量的输入输出、类型占位符、格式化输入输出。此外,文章还涵盖了运算符的种类,如自增、自减、算术、比较、逻辑、三目运算符以及位运算符。最后提到了类型转换,包括自动类型转换和强制类型转换。
摘要由CSDN通过智能技术生成

数据的储存单位:

​ Bit 比特 一个二进制位,只能存0或者1,计算机中存储数据的最小单位

​ Byte 字节 八个二进制位,计算机中储存数据的基本单位

​ KB 1024字节

​ MB 1024KB

​ GB 1024MB

​ TB 1024GB

​ PB 1024TB

数据类型:

​ 为什么要对数据分类:

  1. ​ 现实生活中数据都是自带类别属性
  2. ​ 对数据进行分类可以节约存储空间,提高运行效率

​ C语言中数据分为两大类:自建(程序员自己设计,例如:结构、联合、类),内建(C语言中自带)

​ 内建:

​ 可以使用sizeof计算类型的字节数大小 sizeof()

  • 整型:

    ​ signed 有符号

​ signed char 1 -128~127

​ signed short 2 -32768~32767

​ signed int 4 大概正负20亿

​ signed long 4\8

​ signed long long 8 以9开头的19位数字的整数

注意:signed不加就代表加

​ unsigned 无符号

​ unsigned char 1 0~255

​ unsigned short 2 0~65535

​ unsigned int 4 0~40亿

​ unsigned long 4\8

​ unsigned long long 8 1开头的20位正整数

注意:由于定义无符号数据时比较麻烦,标准库把这些无符号的类型重新定义成以下类型:

​ 需要包含一个头文件<stdint.h>

​ uint8_t uint16_t uint32_t uint64_t

  • 浮点型:

​ float 4

​ double 8

​ long double 12\16

​ 注意:采用科学计数法储存,二进制与真实的数据之间需要翻译转换,因此浮点型运算速度就比整型要 慢,编程时尽量采用整型

​ 小数点后6位有效

​ 判断float类型的数据是否是0

​ float num;

​ if(num 0<= 0.000001 || num >= -0.000001)

​ 模拟:

  • 字符型:char

​ char 字符其实就是符号或者图案,但是,在内存中储存的是整数,需要显示字符时,会根据ASCII码表· 中的对应关系来显示相应的符号或者图案

​ 0 ’ ’ 特殊字符,表示什么都没有

​ 48 ‘0’

​ 65 ‘A’

​ 97 ‘a’

  • 布尔型:bool

​ 由于先有C语言后才有了bool类型,所以C语言不可能有真正的布尔类型,使用stdbool.h头文件,该文件 是对布尔类型做的模拟

​ bool true false都不是C语言关键字

变量和常量

什么是变量:程序运行期间数值可以发生改变的叫做变量,相当于存储数据的盒子。

定义: 类型 变量名;

​ int num;

​ 取名规则:

​ 由字母数字下划线组成

​ 不能以数字开头

​ 不能与32个C关键字重名

​ 见名知意【功能、类型、作用域】

使用:

​ 赋值:num = 100;

​ 参与运算:num*10;

​ 注意:C语言中变量的值默认都是随机的,为了安全起见,一般都初始化为0

变量的输入输出:

​ int printf(const char *format, …);

​ 功能:输出数据

​ format:" 双引号包含的格式信息(提示信息+占位符)"

​ … : 长度可变,变量的列表

​ 返回值:输出字符的个数

​ int scanf(const char *format, …);

​ 功能:从键盘输入数据

​ format:“双引号包括的格式信息(占位符)”

​ … : 要接收的变量的列表

​ 返回值:成功输入变量的个数

​ 注意: scanf需要的是变量的类型、变量的地址 ,变量的地址 = &变量名

类型占位符:

C语言通过占位符来传递变量的类型

​ signed: %hhd %hd %d %ld %lld

​ unsigned: %hhu %hu %u %lu%llu

​ 浮点型: %f %lf %LF

​ 练习1:定义各种类型的变量并初始化,使用scanf输入,然后使用printf显示

什么是常量:程序运行期间数值绝对不能改变的叫常量

​ 1.字面值常量

​ 100 ‘a’ “hello world”

​ 2.枚举常量

​ 3.宏常量

​ 100 默认int

​ 100u unsigned int

​ 100l long

​ 3.14 默认double类型

​ 3.14f float

格式化输入输出:

%nd 显示n个字符宽度,如果不够补空格,右对齐

%-nd 显示n个字符宽度,如果不够补空格,左对齐

%0nd 显示n个字符宽度,如果不够补0,右对齐

%n.mf 显示n个字符宽度,小数点也算一位,不够补空格,m表示显示小数点后的位数(四舍五入)

%g 不显示小数点后多余的0

运算符

1. 自变运算符:前后++/–,使变量的值自动加1或者减1

​ 前自变: 立即有效

​ 后自变: 下一句语句有效

​ 注意:不要在一行语句中多次使用自变运算符

2. 算数运算符:+ - * / %(/ %除数不能为0,会造成浮点数例外,核心已转储,程序直接死掉)

​ 整数/整数 结果没有小数部分

3. 比较运算符:> < >= <= == !=

​ 比较结果是0(假)或者1(真),运算结果可以继续参与运算

​ if((a>b) == 0)

​ int num = 500;

​ 0<num<100;永远为真

​ 600 == n(避免错误)

4. 逻辑运算符:&& || !

​ 比较对象转换为逻辑值,0转换为假,非0转换为真

​ A && B: 一假即假

​ A || B: 一真即真

​ !A: 求反

​ &&,|| 具有短路特性

​ 当左边的表达式可以确定整个表达式结果时,右边不进行运算

5. 三目运算符:运算对象有三个

​ A?B:C

​ 判断A的表达式真假,如果真执行B,如果假,执行C

​ 注意:该语句不能使用流程控制语句,因为它必须要有运行结果

6. 赋值运算符:= += -= *= /=

7. 位运算符:& | ~ ^ >> <<

类型转换

自动类型转换:

​ 只有相同类型的数据才能进行运算,不同类型数据会自动转换成相同类型再进行计算:

转换规则:(以不丢失数据为基础,适当牺牲一点空间)

  1. 字节少的向字节多的转 考虑优先级
  2. 有符号的向无符号的转
  3. 整型向浮点型转

强制转换:

​ (想要转成的类型)原来的数据;

​ int num;

​ (short)num; 注意:有丢失数据的风险,慎重使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值