C语言新手大全:C语言数据类型和变量

C语言数据类型和变量

1.数据类型介绍

C语言提供了丰富的 数据类型 来描述生活中的各种数据
(编程 --> 写代码 -->解决生活中的实际问题)
(在实际生活中有各种数据,如买一件,需要有名字、价格、编码等。而C中的数据类型就是描述这些数据的。)
比如 整数类型就是描述整数,浮点型就是描述小数,字符类型就是描述字符…
在这里插入图片描述
1.字符型:

1 char//character
2 [signed] char//有符号的
3 unsigned char//无符号的

2.整形
注意以下【】可以省略

 1.//短整型
 2.short [int]
 3.[signed] short [int]
 4.unsigned short [int]

 5.//整形
 6.int 
 7.[signed] int
 8.unsigned int 

 9.//长整型
 10.long [int]
 11.[signed] long [int]
 12.unsigned long [int]

 13.//更长整形
 14.long long [int]
 15.[signed] long long [int]
 16.unsigned long long [int]

3.浮点型

1.float//单精度浮点型
2.double//双精度浮点型

4.布尔类型
C语言中原来并 没有 为布尔值单独设置一个类型,而是使用整数 0 表示假,非 0 表示真。
在C99引入了布尔类型,专门表示真假的。

1. bool

bool的用法
在这里插入图片描述
5.各种数据类型的长度
每一种数据类型都有自己的长度,使用不同的数据类型,能够创建出长度不同的类型,变量长度不同,存储的数据范围也就不同。

sizeof是专门计算类型长度的,其单位是 Byte(字节)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:sizeof后面的表达式是不真实参加运算的,其是根据表达式的类型进行计算的。


2.signed和unsigned

C语言使用 signed 和 unsigned 关键字修饰 字符型和整形类型 的。、
signed关键字(可省略),表示一个类型带有正负号;
unsigned关键字,只能表示零和正整数(不带有正负号)。

注意:对于 int类型 ,默认带有正负号(int 就等同于 signed int)

signed int a;//等同于int a

当然,int类型 也可以不带正负号,只表示非负整数。这时 就必须使用unsigned声明。

unsigned int a;

注意:整数变量声明为 unsigned 的好处是,同样长度的内存能够表达的最大整数值,增大了一倍。 例如,signed short int 的取值范围是 -32768 - 32767,最大值是32767;而 unsigned short int 的取值范围是 0 - 65535,最大值增到了65535。
在这里插入图片描述

注意:C语言规定char类型默认是否带有正负号,有系统决定。(char 可能是signed char 也可能是unsigned char, 这一点与int用法不同。)

在这里插入图片描述


3.数据类型的取值范围

及以上学习,不难发现整形类型就有4种: short, int, long, long long。
其实每一种数据类型都有属于自己的存储范围。类型越长的,存储范围越大。要根据实际情况,合理的运用数据类型。
若想查看数据类型的极限值,可以从limits.h 文件(整形类型的取值范围),float.h(浮点类型的取值范围) 查看。


4.变量

C语言中经常把变化的量叫做变量。
变量在创建的时候就给一个初始值,这就是初始化(初始化可以是任何值)。

int a = 12;
float s= 0;
...

注意:
1.变量名尽量有意义。
2.变量名的组成只能是字母,数字,下划线,并且不能是数字开头。
3.变量名不能是关键字。

在这里插入图片描述
而变量又分为全局变量和局部变量。(全局变量:大括号外定义的变量,其作用极广。局部变量:大括号内定义的变量。注意:当全局变量与局部变量的名字相重时,以局部变量优先。 )


5.算数操作符:+ - * / %

进行计算的操作符,这些又称为双目操作符。
在这里插入图片描述
在这里插入图片描述


6.赋值操作符:= 和复合赋值

在这里插入图片描述


7.单目操作符:++ – + -

1.++和–
++是一种自增操作符,又分为前置++和后置++。同理,-- 是一种自减操作符,也分为前置-- 和后置-- 。

例一:
在这里插入图片描述
不管前置++,还是后置++,都是将此数向上加1
在这里插入图片描述
在这里插入图片描述
我认为最重要的是,要将赋值的顺序搞明白。
这个顺序弄明白,接下来的,前置-- 和后置-- 就好办了。

例二:
在这里插入图片描述
在这里插入图片描述
如果你认为以上理解了,那么我给你看个 有意思的东西。

例一:
在这里插入图片描述
在这里插入图片描述
例二:
在这里插入图片描述
在这里插入图片描述
不要认为我打错了,那只是你认为的。(头一开始我也懵逼了)
但我相信,你若看明白,那么会对printf函数 有进一步了解。
(再给个提醒,动手试试看)

2.+ 和 -
运算符+ 对 打印 出的正负值没有影响,是一个完全可以省略的运算符。话说回来,写了也不会报错(就跟现实生活中数学的+、- 使用是一样的)。而运算符- 可以改变一个数的正负。
在这里插入图片描述


8.强制类型转换

在这里插入图片描述
注意:尽量不要使用强制类型转换,会造成数据丢失。
但我目前使用的vs2022,不用写(),编译器自己就可以进行强制类型转换,并给出警告。


9.scanf和printf介绍

1.printf

printf — 按照指定的格式打印文件
print — 打印
f — format — 格式

注意:在使用printf函数之前,一定要加上#include<stdio.h>。反之,会出现警告(无法解析外部符号)。 我们要合理的运用警告提醒,这一点是很重要的。
stdio.h
standard — 标准
i — input — 输入
o — output — 输出

printf( )不会在行尾自动添加换行符。运行结束后,光标就会停留在输出结束的地方,不会自动换行。
若想将光标移到下一行,必须用到转义字符 “\n”(其作用相当于回车键)。
“\n”用法极其广泛。

在这里插入图片描述
2.占位符

所谓“占位符”,就是 这个位置 可以用 其他值 带入。
在这里插入图片描述
注意:占位符可以多个共存 且 printf( )内的参数必须与占位符 一 一 对应(要用准确)。

常见占位符:
%c — 字符
%d — 十进制整数
%f — float类型
%lf — double类型
%hd — 十进制short int类型
%hu — unsigned short int类型
%ld — 十进制long int类型
%lu — unsigned long int类型
%Lf — long double类型浮点数
%p — 指针(用来打印地址)
%s — 字符串
%u — unsigned int无符号整数
%x — 十六进制整数
%zd — size_t类型

3.printf( )输出格式
3.1限定宽度占位符
在这里插入图片描述
3.2打印+、-
在这里插入图片描述
总结:在默认情况下printf( )不对正数显示+号,只对负数显示-号。若想输出+号,可在占位符间加上+号。

3.3限定小数位数
在这里插入图片描述
3.4限定宽度占位符 和 限定小数位数 结合

在这里插入图片描述
我编到这里,不禁感叹,printf函数太牛逼了。这里有许多知识是我以前从未注意到的。这也证实了“学好计算机就要动手操作”

注意:以下是对字符串进行的宽度
在这里插入图片描述
4.scanf
4.1 scanf使用原理
变量值输入,就用scanf。变量值输出屏幕,就用printf。(此二者浑然天成)
在这里插入图片描述
其scanf( )处理用户输入的原理是:用户输入先放入缓存,等到按下回车键后,按照占位符对缓存进行解读。解读用户输入时,会从上一次解读遗留下的第一个字符开始,直到读完缓存,或遇到第一个不符合条件的字符为止。

注意:除了%c。余下的占位符,scanf( )在处理占位符时,会自动过滤空格,换行,制表符。而%c要带这 空格 计算,因为 空格 也算字符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
若在%c前加上空格,输出时,就会跳过零个或多个空格(最开始的空格)。
在这里插入图片描述
在说一下%s,是从当前非空白字符开始开始读起,遇到空白字符为止。另外。scanf( )遇到%s占位符,会在字符串变量末尾存储一个空字符“/0”
在这里插入图片描述
注意:存储字符串时,很可能会超过数组边界,导致预料之外的结果。为了防止这种情况,在使用%s占位符时,应该指定读入字符串的最长长度。
在这里插入图片描述

4.2 scanf返回值

scanf( )的返回值是一个整数,表示成功读取的变量个数。
如果没有读取任何项,或匹配失败,则返回0
如果在成功读取任何数之前,发生了读取错误或者遇到读取到文件结尾,则返回常量EOF(-1)(end of file 文件结束标志 )

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.3 scanf( )的赋值忽略符

赋值忽略符:只要把 *号 任何占位符的百分号后面,该占位符就不会返回值,解析后将被丢弃。
在这里插入图片描述


  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值