C语言程序设计——学习笔记2

基本数据类型及运算

基本数据类型

数据类型类型关键字长度位数范围
字符型char1字节8-128~127
整型int2字节16-32768~32676
单精度浮点型float4字节32
双精度浮点型double8字节64

注: 标准C语言没有具体规定整型数据所占内存的字节数,各种编译程序根据CPU类型,取计算机系统的字长或字长的整数倍作为整型数据的长度。
C语言还使用类型修饰符:

  • short int——表示短整型,其长度一般与int相同
  • long int——表示长整型,其长度一般为双字长
  • unsigned int——比阿诗无符号整型数,其最高位为数字位而不是符号位

带符号整数的最高位为符号位,0表示正整数,1表示负整数。

  • 补码:正数的二进制补码与原码相同,负数的二进制补码则为原码符号位不变,其余数值位变反加一。
  • 无符号整型数的最高位亦为数值位,所以它表示的最大数的绝对值大于有符号的整数。
类别名称类型说明符长度/位
整型短整型short int16
整型int16
长整型long int32
无符号短整型unsigned short int16
无符号整型unsigned int16
无符号长整型unsigned long int32
字符型字符型char8
无符号字符型unsigned char8
浮点型单精度浮点型float32
双精度浮点型double64

常量

常量是指在程序执行过程中其值不发生变化的量。

  • 整型常量:%d, %x, %o分别按十进制、十六进制、八进制输出对应的输出项。
  • 浮点数常量:C语言中的浮点数以十进制数表示,不能用八进制和十六进制数表示。浮点数分为小数形式和指数形式。其中指数形式:<整数部分>.<小数部分>e(或E)<指数部分>。
  • 字符常量:字符常量是指用一对单引号括起来的一个字符。字符常量中的单引号只是起定界作用并不代表字符本身。C语言中字符常量是按整数存储的,所以字符常量可以像整数一样,在程序中参与相关运算。
  • 字符串常量:字符串常量是指用一对双引号扩起来的一串字符。双引号只作定界符使用。C语言中,字符串常量在内存中存储时,系统自动在字符串的末尾加一个串结束标志,即NULL(“\0”)。
  • 转义字符:转义字符通常表示ASCII码字符集中不可打印的控制字符和特定功能的字符。
  • 符号常量:C语言允许将程序中的常量定义为一个标识符,称为符号常量。符号常量一般使用大写英文字母表示,以区别一般用小写字母表示的变量。符号常量在使用前须先定义,定义的形式是:#define <符号常量名><常量>

变量

变量是在程序执行过程中其值可以改变的量。

  • 变量的定义:C语言规定,所有变量在使用前必须先定义,定义一个变量应说明其变量名、数据类型及长度等,格式:<数据类型> <变量名表>;
  • 变量的初始化:C程序中的变量不仅必须先定义再使用,而且在表达式中的变量必须具有确定的值。
  • 变量地址:一个变量被定义后,系统将根据变量的数据类型为其分配一定长度的存储空间。如果变量的内存空间包括多个存储单元,通常把单元首地址称为变量地址。

基本运算

算数运算

运算类型运算符名称例子
双目运算+a+b
-a-b
*a*b
/a/b
%取余a%b
单目运算符++自增a++或++a
自减a–或–a
-取负-a

自增运算符“++”和自减运算符“–”是C语言特有的两个单目运算符。前置运算先增值后引用,后置运算先引用后增值

赋值运算

由赋值运算符“=”将变量和表达式连接起来的式子称为赋值表达式。其形式
:<变量>=<表达式>; C语言赋值表达式中“<表达式>”还可以是另一个赋值表达式。
当赋值运算符两边的数据类型不同时,由编译程序自动进行类型转换,将赋值运算符右边表达式的数据类型转换成左边变量的类型。
算术赋值运算

运算符名称例子
+=加赋值a+=b
-=减赋值a-=b
*=乘赋值a*=b
/=除赋值a/=b
%=取余赋值a%=b

关系运算和逻辑运算

关系运算主要用在C语言的控制结构中,是用于比较两个数据间特定关系的一种运算。

运算符名称例子
>大于a>b
<小于a<b
==等于a==b
>=大于等于a>=b
<=小于等于a<=b
!=不等于a!=b

关系表达式的值按比较结果分为逻辑真和逻辑假。C语言把任何非零的数值都作为逻辑真,仅把零值作为逻辑假。
字符型数据根据其ASCII码值进行比较。
逻辑运算

运算符名称例子
&&逻辑与a&&b
||逻辑或a||b
!逻辑反!a

C语言规定逻辑运算符和关系运算符由高到低的优先次序:!–>关系运算符–>&&和||。

位运算

位运算是指二进制位的运算,这类运算使编程人员可以完成很多汇编级的工作。位运算包括位逻辑运算和移位运算。
位运算符中除位反“~”为单目运算外,其他均为双目运算。

运算符名称例子
&按位与a&b
|按位或a!b
^按位异或a^b
~按位取反~a
>>右移位a>>2
<<左移位a<<2

按位逻辑运算与逻辑运算的区别:前者是对数据每个二进制位的操作,而后者是对数据整体的操作。
在移位过程中,变量一端被移出的位被舍弃,另一端空出的位补0.
在计算机系统中常常采用移位运算,以便快速实现乘法和除法的运算:每左移1位等效于乘以2,每右移1位等效于除以2。
位赋值运算

运算符名称例子
&=位与赋值a&=b
|=位或赋值a|=b
^=位异或赋值a^=b
>>=右移赋值a>>=b
<<=左移赋值a<<=

其他运算

  • 三目条件运算:e1?e2:e3
    其中3个运算量e1,e2,e3可以是变量或表达式。其运算规则是:若e1的值为真,则整个表达式的结果值取e2,否则e1的值为假,整个表达式结果值取e3。
  • 逗号结合运算
    用逗号“,”把若干独立的运算表达式结合成一个运算表达式,称为逗号结合表达式,简称逗号表达式。一般形式:表达式1, 表达式2, …, 表达式n
    逗号表达式的求解过程是:先求解表达式1,再求解表达式2……最后求解表达式n,整个逗号表达式的值即为表达式n的值。
  • 长度运算:C语言提供了取数据类型或变量存储长度的运算,运算符为sizeof,格式:sizeof(数据类型说明符或变量名)。长度单位为字节。

混合运算与类型转换

自动类型转换

在表达式中不同类型的数据进行运算时会被自动转换为同一类型,转换规则是由“存储长度短”向“存储长度长”的类型转换:char–>short–>unsigned short–>int–>unsigned int–>long–>float–>double
在进行赋值运算时,若赋值号右边表达式类型与赋值号左边变量的类型不同时,C编译程序也要自动进行数据类型转换。转换的规则:将表达式的类型转换为变量类型。

强制类型转换

使用强制类型转换,可以强迫变量或表达式的值转换为某一特定类型。一般形式:(类型) 变量 或 (类型) (表达式)

运算优先级和结合性

分级的一般规则是:

  • 单目运算符优先级较高,双目运算符次之,三目运算符优先级较低
  • 双目运算符中,算术运算符较高,关系运算符次之,逻辑运算符较低。位运算符中,移位运算符高于关系运算符,位逻辑运算符低于关系运算符
  • 圆括号运算符优先级最高,逗号运算符优先级最低。赋值运算符及复合赋值运算符的优先级仅高于逗号运算符
  • 30
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值