c语言表达式类型区别,笔记_C语言_ 类型、运算符与表达式

变量和常量是程序处理的两种基本数据对象。

声明语句说明变量的名字及类型,也可以指定变量的初值。

运算符指定将要进行的操作。

表达式则把变量与常量组合起来生成新的值。

对象的类型决定该对象可取值的集合以及可以对该对象执行的操作。

变量名

变量名使用小写字母,符号常量名全部使用大写字母。下划线“_”被看做是字母。所有关健字中的字符都必须小写。

选择的变量名要能够尽量从字面上表达变量的用途,这样做不容易引起混淆。局部变量 一般使用较短的变量名(尤其是循环控制变量)

数据类型及长度

C 语言只提供了下列几种基本数据类型:

char 字符型,占用一个字节,可以存放本地字符集中的一个字符

int 整型,通常反映了所用机器中整数的最自然长度

float 单精度浮点型

double 双精度浮点型

此外,还可以在这些基本数据类型的前面加上一些限定符。short 与 long 两个限定符 用于限定整型:

short int sh;

long int counter;

在上述这种类型的声明中,关键字 int 可以省略。通常很多人也习惯这么做。

常量

ANSI C 语言中的全部转义字符序列如下所示:

符号

意义

\a

响铃符

\\

反斜杠

\b

回退符

\?

问号

\f

换页符

\’

单引号

\n

换行符

\"

双引号

\r

回车符

\ooo

八进制数

\t

横向制表符

\xhh

十六进制数

\v

纵向制表符

字符常量

一个字符常量是一个整数,书写时将一个字符括在单引号中,如,‘x’。字符在机器字符 集中的数值就是字符常量的值。

字符常量’\0’表示值为 0 的字符,也就是空字符(null) 。我们通常用’\0’的形式代替 0, 以强调某些表达式的字符属性,但其数字值为 0。

常量表达式是仅仅只包含常量的表达式。这种表达式在编译时求值,而不在运行时求值。 它可以出现在常量可以出现的任何位置。

字符串常量

字符串常量也叫字符串字面值,是用双引号括起来的 0 个或多个字符组成的字符序列。

我们应该搞清楚字符常量与仅包含一个字符的字符串之间的区别:‘x’与"x"是不同的。 前者是一个整数,其值是字母 x 在机器字符集中对应的数值(内部表示值); 后 者是一个包含 一个字符(即字母 x)以及一个结束符’\0’的字符数组。

枚举常量(enum)

枚举常量是另外一种类型的常量。枚举是一个常量整型值的列表。

在没有显式说明的情况下,enum 类型中第一个枚举名的值为 0,第二个为 1,依此类推。如果只指定了部分枚举名的值,那么未指定值的枚举名的值将依着最后一个指定值向后递增,不同枚举中的名字必须互不相同。同一枚举中不同的名字可以具有相同的值。

#include

#include

void main() {

//枚举

enum months {JAN=1,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC};

printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC);

system("pause");

}

输出结果

1,2,3,4,5,6,7,8,9,10,11,12

请按任意键继续. . .

类型转换

强制类型转换

(类型名称)表达式

我们可以这样来理解强制类型转换的准确含义:在上述语句中,表达式首先被赋值给类型名 指定的类型的某个变量,然后再用该变量替换上述整条语句

强制类型转换符和一元运算符的运算等级是一样的

自增运算符和自减运算符

++n是先把n加上1,然后使用n

n++是先使用n,然后给n加1

按位运算符

符号名

含义

&

按位与(AND)

|

按位或(OR)

^

按位异或(XOR)

<<

左移

>>

右移

~

按位求反(一元运算符)

赋值运算符与表达式

x *= y + 1

的含义是:

x = x * (y + 1)

而不是

x = x * y + 1

赋值表达式的类型是它的左操作数的类型,其值是赋值操作完 成后的值

条件表达式

条件表达式(使用三元运算符“? :”)提 供了另外一种方法编写这段程序及类似的代码段,在表达式

expr1 ? expr2 : expr3

中,首先计算 expr1,如果其值不等于 0(为真),则计算 expr2 的值,并以该值作为条件 表达式的值,否则计算 expr3 的值,并以该值作为条件表达式的值。expr2 与 expr3 中只 能有一个表达式被计算。

z = (a > b) ? a : b; /* z = max(a, b) 求Z的最大值*/

应该注意,条件表达式实际上就是一种表达式,它可以用在其它表达式可以使用的任何 地方;如果 expr2 与 expr3 的类型不同,结果的类型将由本章前面讨论的转换规则决定

运算符优先级与求值次序

同一行中 的各运算符具有相同的优先级,各行间从上往下优先级逐行降低。例如,*、/与%三者具有相 同的优先级,它们的优先级都比二元运算符+、-高。运算符( ) 表 示 函数调用。

运算符的优先级与结合性

运算符

结合性

( ) [ ] -> .

从左至右

!  ~  ++  - - +  -  *   (type)  sizeof

从右至左

* / %

从左至右

+ -

从左至右

<>

从左至右

 >=

从左至右

==  !=

从左至右

&

从左至右

^

从左至右

|

从左至右

&&

从左至右

||

从左至右

?  :

从左至右

=  +=  - =   *=  /=  %=  &=  ^=  |=  <<=  >>=

从右至左

,

从右至左

注:一元运算符+、-、&与*比相应的二元运算符+、-、&与*的优先级高。

注意,位运算符&、^与|的优先级比运算符==与!=的低。

标签:字符,优先级,常量,C语言,运算符,枚举,表达式

来源: https://blog.csdn.net/qq_42814498/article/details/89218280

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值