⽬录
1.
数据类型介绍
2.
signed 和 unsigned
3.
数据类型的取值范围
4.
变量
5.
算术操作符:+、-、*、/、%
6.
赋值操作符:= 和复合赋值
1.
数据类型介绍
C语言提供了丰富的数据类型。
使⽤整型类型来描述整数,使⽤字符类型来描述字符,使⽤浮点型类型来描述⼩数。
所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作
数据。
字符型
char //character[signed] char //有符号的(区分正负---值域 -128-127)unsigned char //无符号的(从零开始---值域 0-255)
整型
// 短整型short [ int ][ signed ] short [ int ]unsigned short [ int ]// 整型int[ signed ] intunsigned int// ⻓整型long [ int ][ signed ] long [ int ]unsigned long [ int ]// 更⻓的整型//C99 中引⼊long long [ int ][ signed ] long long [ int ]unsigned long long [ int ]
浮点型
floatdoublelong double
还有一些变量就不一一展示了;
各种数据类型的长度
每⼀种数据类型都有⾃⼰的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不
同,存储的数据范围就有所差异。
sizeof操作符
sizeof
是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof的操作符数的类型⻓度的,单位是字
节。
sizeof
操作符的操作数可以是类型,也可是变量或者表达式。
sizeof ( 类型 )sizeof 表达式
sizeof
的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。
sizeof
后边的表达式是不真实参与运算的,根据表达式的类型来得出⼤⼩。
sizeof
的计算结果是
size_t
类型的。
sizeof 运算符的返回值,C 语⾔只规定是⽆符号整数,并没有规定具体的类型,⽽是留给系统⾃⼰去决定, sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是unsigned int ,也有可能是 unsigned long ,甚⾄是 unsigned long long ,对应的 printf() 占位符分别是 %u 、 %lu 和 %llu 。这样不利于程序的可移植性。C 语⾔提供了⼀个解决⽅法,创造了⼀个类型别名 size_t ,⽤来统⼀表⽰ sizeof 的返回值类型。对应当前系统的 sizeof 的返回值类型,可能是 unsigned int ,也可能是unsigned long long 。
在vs2022 X64的配置输出
![](https://i-blog.csdnimg.cn/blog_migrate/b433206978a5e8851743d0609e4ff9e5.png)
在sizeof中的表达式不计算
# include <stdio.h>int main (){short s = 2 ;int b = 10 ;printf ( "%d\n" , sizeof (s = b+ 1 ));printf ( "s = %d\n" , s);return 0 ;}
在上面的代码 s的值是2,
sizeof
在代码进⾏编译的时候,就根据表达式的类型确定了,类型的常⽤,⽽表达式的执⾏却要在
程序运⾏期间才能执⾏,在编译期间已经将sizeof处理掉了,所以在运⾏期间就不会执⾏表达式了。
2.
signed 和 unsigned
C 语⾔使⽤
signed
和
unsigned
关键字修饰 字符型和整型 类型的。
signed
关键字,表⽰⼀个类型带有正负号,包含负值;
unsigned
关键字,表⽰该类型不带有正负号,只能表⽰零和正整数。
对于
int
类型,默认是带有正负号的,也就是说
int
等同于
signed int
。
由于这是默认情况,关键字
signed
⼀般都省略不写,但是写了也不算错。
signed int a;// 等同于int a; 一般signed 省略不写unsigned int a;
以上两者的区别是
unsigned int 与 int 同样长的内存长度内存能够表示最大的整数增大了一倍。
⽐如,16位的 signed short int
的取值范围是:-32768~32767,最⼤是32767;⽽
unsigned short int
的取值范围是:0~65535,最⼤值增⼤到了65,535。32位的
signed
int
的取值范围可以参看
limits.h
中给出的定义。
3.
数据类型的取值范围
![](https://i-blog.csdnimg.cn/blog_migrate/aa79f7b75116cd75cc096a40b0102679.png)
4.
变量
了解了类型,我们是用类型做什么呢?类型是用来创建变量的。
什么是变量呢?C语言中把经常变化的值称为变量,不变的值称为常量。
int a;//整型变量char ch;//字符变量数据类型 + 变量名;
变量在创建的时候给个初始值,就叫初始化。
例:int age =2024;char ch='w';double a=20.5;unsigned int b=10;
4.2
变量的分类
•
全局变量:在⼤括号外部定义的变量就是全局变量
全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的。
•
局部变量:在⼤括号内部定义的变量就是局部变量
局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。
如果局部和全局变量,名字相同,局部变量优先使⽤。
5.
算术操作符:+、-、*、/、%
在写代码时候,⼀定会涉及到计算。
C语⾔中为了⽅便运算,提供了⼀系列操作符,其中有⼀组操作符叫:算术操作符。分别是:
+ - *
/ %
,这些操作符都是双⽬操作符。
注:
操作符也被叫做:运算符,是不同的翻译,意思是⼀样的。
+ -
+
和
-
⽤来完成加法和减法。
+
和
-
都是有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双⽬操作符
*
运算符
*
⽤来完成乘法。
/
运算符
/
⽤来完成除法。
除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数。
# include <stdio.h>int main (){float x = 6 / 4 ;int y = 6 / 4 ;printf ( "%f\n" , x); // 输出 1.000000printf ( "%d\n" , y); // 输出 1return 0 ;}
上⾯⽰例中,尽管变量
x
的类型是
float
(浮点数),但是
6 / 4
得到的结果是
1.0
,⽽不是
1.5
。原因就在于 C 语⾔⾥⾯的整数除法是整除,只会返回整数部分,丢弃⼩数部分。
%
运算符
% 表⽰求模运算,即返回两个整数相除的余值。这个运算符只能⽤于整数,不能⽤于浮点数。负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定。
=
赋值操作符
=
是⼀个随时可以给变量赋值的操作符。