C语言入门:基础篇02 数据、运算

文章详细介绍了C语言中的数据类型,包括分类原因、存储空间单位、数据类别和类型分类。接着讨论了变量和常量的概念、定义、命名规则以及如何使用。此外,还涵盖了数据的格式化输出、各种运算符(如自变运算符、算术运算符、关系运算符、逻辑运算符等)的用法,以及类型转换的问题,强调了自动转换和强制转换的规则。

目录

一、数据类型

1、分类原因

2、存储空间单位

3、数据类别

4、类型分类

二、变量与常量

1、变量

2、常量

三、数据的格式化输出

四、运算符

1、自变运算符

2、算术运算符

3、关系运算符

4、逻辑运算符

5、三目运算符

6、赋值运算符

7、位运算符

五、类型转换问题


一、数据类型

1、分类原因

现实中数据是自带属性类别

对数据分类可以节约内存存储空间、提高运行速度

2、存储空间单位

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

Byte      字节 1Byte=8Bit 字节是计算机存储的基本单位

Kb         1024Byte

Mb         1024Kb

Gb         1024Mb

Tb         1024Gb

Pb         1024Tb

3、数据类别

1.  自建(程序员自己设计)

2.  内建(C语言自带的)

4、类型分类

①整型

类型名字节数数据范围备注

signed

有符号

signed char1-128~127

最高位是符号位,

数据位7位  

0正数

1负数

signed short2-32768~32767
signed int4±20亿
signed long4(32位)/8(64位)±20亿/±9开头19位整数
signed long long8±9开头19位整数
*注意:signed不加等同于加了,即signed char==char
类型名字节数数据范围备注

unsigned

无符号

unsigned char10~255

二进制最高位数据位

unsigned short20~65535
unsigned int40~40亿
unsigned long  4(32位)/8(64位)0~40亿/0~1开头20位整数
unsigned long long80~1开头20位整数

*注意:由于定义无符号数据时比较麻烦,因此在标准库中把这些类型重新定义成了新的类型名使用时需要包含一个头文件 <stdint.h>。

                   无符号  uint8_t/uin16_t/uint32_t/uint64_t

                     有符号  int8_t/in16_t/int32_t/int64_t          

②浮点型

类型名字节数备注
float4单精度
double8双精度
long double12(32位)/16(64位)

*注意:

1.采取科学计数法,在二进制与真实数据之间需要进行换算过程,因此浮点数的运算使用速度比整形慢得多,编程时尽量使用整形

2.大部分操作系统只对小数点后6位有效

③模拟型

字符型布尔型
表示charbool
备注字符就是图案或符号,字符在内存中依然存储成整数,需要显示成字符时候,操作系统会根据ASCII码表中的对应关系把整数显示成对应的符号或字符先有c语言,再有布尔,C语言中不可能有真正的布尔类型,都是<stdbool.h>中对bool类型使用整数进行模拟

二、变量与常量

1、变量

①含义:在程序运行期间值可以发生变化的叫做变量,相当于存放数据的盒子

②定义:类型名 变量名; 例:int num;

③取名规则

A. 组成只能由字母、数字、下划线

B. 不能以数字开头

C. 不能与c语言关键字(32个)重名

D. 见名知意(功能、类型、范围...)

④使用

赋值:变量名 = val; 变量初始值默认是随机的,为了安全,一般在定义时会初始化为0

参与运算:变量名*10(可替换);

⑤变量的输出

        int printf(const char *format, ...);

功能:输出数据

format:"提示信息+占位符"

...:变量名列表

int返回值:成功输出的字符个数

占位符:C语言通过占位符的方式传递变量的类型

整型
占位符charshortintlonglong long
signed%hhd%hd%d%ld%lld
unsigned%hhu%hu%u%lu%llu
浮点型
float%fdouble%lflong double%LF
字符型
char%q

⑥变量的输入

        int scanf(const char *format, ...);

功能:输入数据

format:"占位符""1990-2-3"

...:变量地址列表

*注意: 1. scanf需要变量类型和地址

             2. 变量地址==&变量名

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

2、常量

含义:在程序运行期间数值不发生变化的叫做常量

举例:10          默认int类型 有符号                

           10l         long                

           10ll        long long

           10u       无符号的int

           10lu      无符号的long

           10llu     无符号的long long

           3.14      默认double

           3.14f     float 

           3.14lf    long double

三、数据的格式化输出

格式化符号说明
%nd最少显示n个字符宽度,不足时左补空格,右对齐
%-nd最少显示n个字符宽度,不足时右补空格,左对齐
%0nd最少显示n个字符宽度,不足时补0,右对齐
%n.mf显示n个字符宽度(小数点也算一位)并保留m位小数(四舍五入),不足补空格,右对齐
%g匹配float和double,能砍掉多余的0

四、运算符

1、自变运算符

        ++/--   让变量的值自动加1或减1

        前自变:++/--num   立即有效

        后自变:num++/--   下一行语句才有效

        注意:不要在一行代码中多次出现自变运算符

2、算术运算符

        + - * / %

*注意:① 整数/整数   只保留整数部分

            ② / %  除数不能为0,否则会在运行时出现浮点数例外(核心已转储)

            ③ % 不能对浮点数求余

3、关系运算符

        == != > < >= <=

        会得到比较结果是1(成立)或0(不成立),比较的结果还可以继续参与运算

        int n = -10;

        10 < n < 100;   与数学比较不一样,是永远为真

*注意:建议常量放== != 的左边,防止少些一个=

4、逻辑运算符

        && || !

        会先把运算对象转换成逻辑值:非零转为真,0转为假,然后再参与逻辑运算

        A && B  一假即假

        A || B  一真即真

        !A      求反

&& 和 || 的短路特性:

1、当左边部分的值已经可以确定整个逻辑运算符的结果时,那么右边部分不执行

2、也可以借助短路特性,实现简单的单分支效果

5、三目运算符

        A ? B : C

            先判断A的值如果为真(非0)则执行B否则执行C

6、赋值运算符

        = += -= ...

*注意:赋值运算符的运算结果是右边赋的数据

7、位运算符

        & | ~ ^ << >>

*注:1.sizeof()可以计算类型/变量所占内存字节数,但它也是一个运算符

         2.运算符有优先级,如果记不住,多加小括号

五、类型转换问题

1、只有相同类型的数据才能进行运算,如果类型不相同的数据需要先转换成相同的类型才能运算

2、自动类型转换

            转换规则:以不丢失数据位基础,可以适当地牺牲一些空间

                ①字节少向字节多的转

                ②有符号向无符号的转

                ③整型向浮点型转

        *注意:优先顺序①②③, 当运算类型对象只是char或short且类型不同 编译器会做类型提升为int

3、强制类型转换

            (新类型名)数据;

            有丢失数据的风险,但是需要使用时还是得用

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就酱77叭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值