:C语言的特点及处理方法

基本运算符和表达式

运算符的类型、优先级和关联性

C 中的运算符和表达式的数量在高级语言中很少见。正是丰富的运算符和表达式使C语言的功能非常完整。这是 C 语言的主要特点之一。

C语言的运算符不仅有不同的优先级,而且还有一个特点,就是它的结合性。在一个表达式中c语言的运算符优先级,每个操作数参与运算的顺序不仅要符合运算符优先级的规则,而且还要受到运算符的结合性的约束,从而确定运算是从左到右还是从左到右进行。右到左。这种关联性在其他高级语言的运算符中是找不到的,因此增加了 C 语言的复杂性。

运算符的种类 C语言中的运算符可以分为以下几类:

1.算术运算符

用于各种数值运算。包括加法(+)、减法(-)、乘法(*)、除法(/)、余数(或模运算c语言的运算符优先级,%)、自增(++)、自减(–)共七种。

2.关系运算符

用于比较操作。包括大于(>)、小于(=)、小于等于(>=,i,i+1–>i,i+1–>i

j+1->j,j+1->j,j+1->j,j+j+j->q int i=5,j=5,p,q;

p=(i++)+(i++)+(i++);

q=(++j)+(++j)+(++j);

在这个程序中,P=(i++)+(i++)+(i++)应该理解为三个i相加,所以P的值为15。然后i加13倍,等价加上 3,所以 i 的最终值为 8。对于 q 的值,情况并非如此。 q=(++j)+(++j)+(++j)应该理解为q先加1,然后参与运算。由于 q 以 1 为增量 3 次,值为 8,三个 8 的和为 24,j 的最终值仍为 8。 算术表达式 表达式是组合常量、变量、函数和运算符的表达式。表达式有一个值和它的类型,它们等于表达式计算结果的值和类型。表达式求值按运算符优先级和关联性规定的顺序进行。单个常量、变量或函数可以看作是表达式的一种特殊情况。

算术表达式

它是一个由算术运算符和括号连接的表达式。下面是一个算术表达式的例子:

a+b (a*2)/c(x+r)*8-(a+b)/7++isin(x)+sin(y) (++i)-(j++ )+(k–)

赋值运算符和赋值表达式

简单的赋值运算符和表达式,简单的赋值运算符记为“=”。用“=”连接的表达式称为赋值表达式。它的一般形式是:变量=表达式示例:

x=a+b

w=sin(a)+sin(b)

y=i+++–j 赋值表达式的作用是计算表达式的值,赋值给左边的变量。

赋值运算符是右结合的。因此:

a=b=c=5

可以理解

a=(b=(c=5))

在其他高级语言中,赋值构成一个称为赋值语句的语句。在 C 中,“=”被定义为构成赋值表达式的运算符。赋值表达式可以出现在任何可以出现表达式的地方。比如公式x=(a=5)+(b=8)是合法的。它的意思是把5赋给a,8赋给b,然后将a和b相加,并赋和到 x ,所以 x 应该等于 13。

赋值语句也可以用 C 语言形成。根据 C 语言,任何以分号结尾的表达式都构成一个语句。因此,如x=8; a=b=c=5;是赋值语句,我们在前面的示例中广泛使用。

如果赋值运算符两边的数据类型不同,系统会自动进行类型转换,即将赋值号右边的类型替换为左边的类型。具体规定如下:

1.Real 被分配给一个整数,省略小数部分。前面的例子 2.9 已经说明了这种情况。

2.整数类型赋值给实数类型,值不变,但会以浮点形式存储,即加小数部分(小数部分的值部分是 0)。

3.字符类型被赋值为整数类型。由于字符类型为1字节,整数类型为2字节,所以字符的ASCII码值放在整数的低八位,高八位为0。

4.整数类型赋值给字符类型,字符量只赋值低八位。

void main(){

int a,b=322;

浮点 x,y=8.88;

char c1=’k’,c2;

a=y;

x=b;

a=c1;

c2=b;

printf(“%d,%f,%d,%c”,a,x,a,c2);

}

int a,b=322;

浮点 x,y=8.88;

char c1=’k’,c2;

printf(“%d,%f,%d,%c”,a=y,x=b,a=c1,c2=b);

这个例子展示了上述赋值操作中的类型转换规则。 a是一个整数,只有在给实值y赋值888之后才取整数8。 x 为实数类型,整数 b 值被赋值为 322,后跟小数部分。将字符类型值c1赋值a变为整数类型,将整数类型值b赋值给c2然后取其低八位变为字符类型(b的低八位为01000010,即十进制66,根据ASCII码对应字符B)。

复合赋值和表达式

在赋值运算符“=”之前添加其他二元运算符,形成复合赋值运算符。比如

+=,-=,*=,/=,%=,=,&=,^=,|=.构成复合赋值表达式的一般形式为:variable binary operator=expression 等价于 variable=variable operator expression 例如:

a+=5 等价于 a=a+5

x*=y+7 等价于 x=x*(y+7)

r%=p 等价于 r=r%p

写法

复合赋值运算符初学者可能不会用到,但是对编译处理很有好处,可以提高编译效率,生成高质量的目标代码。逗号运算符和逗号表达式在

逗号运算符

逗号“,”在C语言中也是一个运算符,称为逗号运算符。它的作用是将两个表达式连接成一个表达式,称为逗号表达式。

一般形式为:表达式1,表达式2 求值过程是分别求出两个表达式的值,将表达式2的值作为整个逗号表达式的值。

void main(){

int a=2,b=4,c=6,x,y;

y=(x=a+b),(b+c);

printf(“y=%d,x=%d”,y,x);

}

斧头

在这个例子中,y等于整个逗号表达式的值,也就是表达式2的值,x是第一个表达式的值。关于逗号表达式还有两点需要注意:

1.一般形式的逗号表达式表达式1和表达式2也可以是逗号表达式。例如: expression1, (expression2, expression3) 形成一个嵌套的 case。所以逗号表达式可以展开为如下形式: expression1, expression2, …expressionn 整个逗号表达式 公式的值等于表达式 n 的值。

2.逗号表达式用于程序中。通常,逗号表达式中的每个表达式的值是单独需要的,但整个逗号表达式的值不一定是必需的。

3. 并非所有的逗号表达式都形成逗号表达式。例如,在变量声明中,函数参数表中的逗号仅用作变量之间的分隔符。

[练习] //算术int a,b,c;

浮点数;

a=11;

b=235;

c=a+b-a*b;

d=(float)c/(float)a;

a=c/a;’Vtable

a,2,0

b,2,0

c,2,0

d,4,0.0

Vtable

‘更新

1,0;2,0;3,0

4,0.0

1,11

2,235

3,-2339

4,-212.636368

1,-212

Vupdate

实践

[练习] //1int a,b,c1,c2;

a=25;

b=3243;

c1=b/a;

c2=b%a;’Vtable

a,2,0

b,2,0

c1,2,0

c2,2,0

Vtable

‘更新

1,0;2,0;3,0;4,0

1,25

2,3243

3,129

4,18

Vupdate

实践

[练习] //1int a,b,c;

a=25;

b=40;

c=a+b,c+35;’Vtable

a,2,0

b,2,0

c,2,0

Vtable

‘更新

1,0;2,0;3,0

1,25

2,40

3,65

Vupdate

实践

总结

1.C 数据类型

基本类型、构造类型、指针类型、空类型

2.基本类型的分类及特点

类型说明符字节值范围

字符类型 char1 C 字符集

基本整数 int 2 -32768~32767

短整数2 -32768~32767

long型long int 4 -214783648~214783647

无符号类型 unsigned2 0~65535

无符号长整数 unsigned long 4 0~4294967295

单精度实浮点数4 3/4E-38~3/4E+38

双精度实型 double 8 1/7E-308~1/7E+308

3.常量后缀

L 或 L 长

U 或 u 无符号数

F 或 f 浮动

4.常量类型

整数、长整数、无符号、浮点数、字符、字符串、符号常量、转义字符。

5.数据类型转换

·自动转换

在不同类型数据的混合操作中,系统自动实现从小字节类型到多字节类型的转换。不同类型的量相互赋值时,系统也会自动转换,赋值号右侧的类型转换为左侧的类型。

·强制转换

转换由强制转换运算符完成。

6.运算符优先级和关联性

一般来说,一元运算符的优先级较高,而赋值运算符的优先级较低。算术运算符的优先级较高,而关系运算符和逻辑运算符的优先级较低。大多数运算符是左结合、一元运算符、三元运算符、赋值

7.表达式

表达式是由连接常量、变量和函数的运算符组成的表达式。每个表达式都有一个值和类型。表达式计算按照运算符优先级和关联性规定的顺序进行。

© 版权声明
THE END
喜欢就支持一下吧
点赞235赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容