找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3158|回复: 0
收起左侧

经验之谈_C语言强制类型转换运算

[复制链接]
ID:475247 发表于 2019-2-10 16:22 | 显示全部楼层 |阅读模式

经验之谈_C语言强制类型转换运算

C语言中的强制类型转换是通过类型转换运算来实现的。
其一般形式为:
(类型说明符)(表达式)
其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
例如:
(float)a 把a 转换为实型
(int)(x+y) 把x+y 的结果转换为整形
在使用强制转换时应注意以下问题:
1)类型说明符和表达式都必须加括号(单个变量可以不加括号) ,如果把(int)
(x+y)写成( int)x+y 则成了把x 转换成int 型之后再与y 相加了。
2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的
数据长度进行的临时性的转换,而不改变数据说明时对该变量定义的类型。
【例1】
#include <stdio.h>
int main (void)
{
float f = 3.14;
printf("(int)f = %d,f = %.2f\n",(int)f,f);
return 0;
}
本例表明, f 虽强制转为int 型,但只在运算中起作用,是临时的,而f 本身
的类型并不改变。因此, (int)f 的值为5(删去了小数)而f 的值仍为5.75.
1、求余运算符(模运算符) “%”:双目运算,具有左结合性。要求参与运
算的量均为整型。求余运算的结果等于两数相除后的余数。
#include <stdio.h>
int main (void)
{
printf(" %d\n",110%3);
return 0;
}
本例输出110 除以3 所得的余数2。
2、算数表达式和运算符的优先级和结合性
表达式是由常量、变量、函数和运算符组合起来的式子。一个表达式有一个
值及其类型, 他们等于计算表达式所得结果的值和类型。表达式求值按运算符的
优先级和结合性规定的顺序进行。单个的常量、变量、函数可以看作是表达式的
特例。
算数表达式是由算术运算符和括号连接起来的式子。
算数表达式:用算数运算符和括号将运算对象(也称操作数)连接起来的、
符合C语法规则的式子。
以下是算数表达式的例子:
a+b;
(a*2)/c;
(x+r)*8-(a+b)/7;
++I;
Sin(x)+sin(y);
(++i)-(j++)+(k--);
运算符的优先级: C语言中,运算符的运算优先级共分为15 级。1 级最高,
15 级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个
运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处
理。
运算符的结合性: C语言中各运算符的结合性分为两种,即左结合性(自左
至右)和右结合性(自右至左) 。例如算术运算符的结合性是自左至右,即先左
后右。如有表达式x-y+z,则先执行x-y 运算,然后再执行+z 运算。这是左结合性。
右结合性最典型的是赋值运算符。如x=y=z.
3、强制类型转换运算符
其一般形式为:
(类型说明符)(表达式)
其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
例如:
(float) a
(int)(x+y)
4、自增、自减运算符
++i 自增1 后再参与其他运算。
--i 自减1 后再参与其他运算。
i++ i 参与运算后, i 的值再自增1.
i--参与运算后, i 的值再自减1.
比较容易出错的是i++,i--。因此应仔细分析。
【例3】
#include <stdio.h>
int main (void)
{
int i = 8;
printf(" output = %d\n",++i);//output=9
printf(" output = %d\n",--i);//output=8
printf(" output = %d\n",i++);//output=8
printf(" output = %d\n",i--);//output=9
printf(" output = %d\n",-i++);//output=-8
printf(" output = %d\n",-i--);//output=-9
return 0;
}
【例4】
#include <stdio.h>
int main (void)
{
int i=8,j=8,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("p=%d,q=%d,i=%d,j=%d\n",p,q,i,j);
return 0;
}
这个程序中,对p=(i++)+(i++)+(i++)应理解为三个i 相加,故为15.然后i 自增
1,三次故为i=11.对q 则不然,先自增1,再参与运算, q=10+11+12=31。

评分

参与人数 5黑币 +98 收起 理由
yoxi + 8
shuisheng60 + 35
就你**** + 10
shuisheng + 35
jinsheng7533967 + 10

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表