打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
快速上手系列-C语言之基础篇(二)数据类型与运算符

在上一篇文章《快速上手系列-C语言之基础篇(一)》中写了关于C语言的程序结构,关键字及控制语句。本篇主要写写C语言中数据类型,以及运算符相关方面的知识。

一、变量与常量

1、常量:在程序运行过程中,其值不能被改变的量(注意:不能反过来说),这些固定的值,又叫做字面量。常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。

  • 整型 100,180,-100,0
  • 实型 3.14 , 0.125,-3.789
  • 字符型 ‘a’, ‘b’, ‘6’
  • 字符串 “a”, “abc”,“123”

常量的定义方式

  • 使用 #define 预处理器。 // #define MY_NUM 10
  • 使用 const 关键字。 // const char ch = 'a';

2、变量:其值可以改变,变量名只能由字母、数字、下划线组成,第一个字必须为字母或下划线,变量在编译时为其分配相应的内存地址。

二、C语言数据类型:

1、整型数据

  • 整型常量的表示方法:十进制;八进制以数字0开头,如0123;十六进制以0x开头,如0x12

整型变量分为

  • 有符号/无符号基本整型 (unsigned/signed) int
  • 有符号/无符号短整型 (unsigned/signed) short(int)
  • 有符号/无符号长整型 (unsigned/signed) long (int)

2、实型数据

实型常量

  • 实型也称为浮点型,实型常量也称为实数或者浮点数
  • 十进制形式:由数字和小数点组成:0.0、0.12、5.0
  • 指数形式:123e3代表123*10的三次方

实型变量

  • 单精度(float)和双精度(double)
  • float型: 占4字节,7位有效数字(十进制)
  • Double型: 占8字节,15~16位有效数字 (十进制)
  • 包含小数点却不以f结尾的常量是double

3、字符数据

字符常量:用单引号括起来,如:‘a’、‘b’等。

转义字符:以反斜杠“\”开头,后跟一个或几个字符。如‘\n’,‘\t’等,分别代表换行,横向跳格。

字符变量:

  • 用char定义的变量只能存放一个字符常量;
  • 每个字符变量被分配一个字节的内存空间;字符值以ASCII码的形式存放在变量的内存单元中

例子说明:ch = 'a'; ch变量中存放的是字符 'a' 的ASCII :97, 即 ch=97 跟 ch='a' 在本质上是一致的。

4、字符串

  • 是由双引号括起来的字符序列,如“haha”、“hello world”,“123”等都是合法的字符串常量。
  • 注意:字符串常量和字符常量是不同的

三、数据类型的转换

数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题.转换的方法有两种:

1、自动转换:遵循一定的规则,由编译系统自动完成。

  • 转换方向 :


  • 数据类型转换的规律:占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。
  • 来看个例子:

  • 从这个例子可以看出:a为char型,求其类型大小为1,而在sizeof(a a),进行a a计算的时候自动转换为int行,所以sizeof(a a)为4,sizeof(a 1.2),其中1.2默认为double类型(之前说过,1.2f为float型,不加f默认为double型),a在与double型进行计算时自动转换为double型,故sizeof(a 1.2)为8;

2、强制类型转换:(类型说明符) (表达式), 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型,如:

  • (float)a; // 把a的值转换为实型
  • (int)(x y); // 把x y的结果值转换为整型

注意:

  • 类型说明符和表达式都必须加括号;
  • 无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据定义的类型

例子1-类型不改变:

例子2-数值不改变 :

四、运算符与表达式

1、数据在运算中使用的运算符包括:运算符的种类、优先级和结合性

2、C语言常见的运算符:

  • 算术运算符 ( 、-、*、/、%、 、--)

这里需要注意一下“ ”和“--”这两种自增/自减运算符,虽然,它们放在变量前面/后面,作用都是使变量的值增1或减1,但是还是有区别的:

  • i,--i(先加/减,后使用)
  • i ,i-- (先使用,后加/减)

(1)自加/自减运算符在变量后面,表示先使用,后加/减,举例说明一下:

例子当中,先将a的初始值为10,将a的值赋给b,即b的值为10,然后a进行自加运算,自加后a的值变为11,这就是先使用,后加/减;

(2)自加/自减运算符在变量前面,表示先加/减,后使用,举例说明一下:

例子当中,先将a的初始值为10,a先进行自加运算,自加后a的值为11,然后将a的值赋给b,即b的值为11,这就是先加/减,后使用;

  • 关系运算符 (>、<、==、>=、<=、!= )
  • 逻辑运算符 (!、&&、||)
  • 位运算符 (<<、>>、&、|、 ~ 、∧ )
  • 赋值运算符 (=、及其扩展赋值运算符)
  • 条件运算符 (?:)

(1)条件运算符,是一种三元运算符,形式为: (a > b) ? a : b;

(2)说明:先判断(a > b)是否为真,若为真,表达式取值a,否则取值b;

(3)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符;比如 max = ( a > b) ? a : b;可以去掉括号而写为 max = a > b ? a : b;

(4)“?” 和“ :”是一对运算符,不能分开单独使用。

举个简单例子来了解一下条件运算符的用法:

例子当中,将 ( a < 1 ) ? 100 : 200 表达式的值赋给b,a的值为5,条件 a < 1为假, 因此表达式( a < 1 ) ? 100 : 200取值是200,即b为200;

后面一句 b = ( a == 5 ) ? 100 : 200;a初始值为5,条件 a == 5 为真,因此表达式 ( a == 5 ) ? 100 : 200 取值100,即b为100.

  • 逗号运算符 (,)
  • 指针运算符 (*和&)
  • 求字节数运算符(sizeof( ))
  • 强制类型转换运算符((类型))
  • 分量运算符(.->)
  • 下标运算符([])
  • 其他( 如函数调用运算符())

用算术运算符将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为C算术表达式.运算对象包括常量、变量、函数等(函数指的是函数的返回值)

  • 例如: a*b/c-1.5+'a′

另外说一下复合的赋值运算符,就是在赋值符“=”之前加上其它二目运算符构成复合赋值符: =,-=,*=,%=,<<=,>>=,&=,^=

  • a = 10 //等价于 a = a 10;
  • a *= b 10 //等价于 a = a * (b 10);

五、运算符的优先级

运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。

例如 x = 7 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。

在判断同优先级运算符计算顺序时,要注意结合性,详细的优先级及结合性请参考以下表格:

今天就写到这里,下面来一条华丽的分割线


接下来开始写C语言中数组相关的内容,想了解的小伙伴们,可以添加关注。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C语言的数据类型和表达式
第二讲:程序设计的常用预备知识
第三章 数据类型、运算符与表达式
C程序课件第3章类型
计算机程序设计基础(C语言)第2章 C语言基础
程序设计基础
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服