为什么C语言中int i=3,j=5;float x=2.5;double y=5.0;表达式i-=j*=x+y的值不是
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/20 22:51:14
为什么C语言中int i=3,j=5;float x=2.5;double y=5.0;表达式i-=j*=x+y的值不是-34.5而是-34?
如果有取整的运算符号,那么是哪个起到了取整的作用?还有哪些运算符有取整作用?
如果有取整的运算符号,那么是哪个起到了取整的作用?还有哪些运算符有取整作用?
不是运算符取整,之所以取整的原因是,类型转换!
数据类型的转换一般分为隐含转换和强制转换两种;
隐含转换
算术运算符 关系运算符 逻辑运算符赋值运算符等二元运算符要求两个运算符的类型一致,算术运算 关系运算中参与运算的类型不一致时要进行隐含转换,原则是将低类型转化成高类型(类型越高数据精度越高,double>float>unsigned long>long >int>short>char>)这种转化是电脑自动完成,是安全的,数据精度没有损失;
强制转换
一般涉及到将高类型转化成低类型时使用,不安全,可能在精度的损失,有两种方法
1类型说明符(表达式)//c++强制转化符号
2(类型说明符)表达式 //c强制转化符号;
如 float z=7.56;
int a;
a=int(z);或a=(int)z;
i-=j*=x+y表达式分解如下:
double tmp1 = (double)x + y;
j = int( (double)j * tmp1 ); // j =int( 5.0 *7.5) =37
i-=j; // i = 3 - 37 = -34;
数据类型的转换一般分为隐含转换和强制转换两种;
隐含转换
算术运算符 关系运算符 逻辑运算符赋值运算符等二元运算符要求两个运算符的类型一致,算术运算 关系运算中参与运算的类型不一致时要进行隐含转换,原则是将低类型转化成高类型(类型越高数据精度越高,double>float>unsigned long>long >int>short>char>)这种转化是电脑自动完成,是安全的,数据精度没有损失;
强制转换
一般涉及到将高类型转化成低类型时使用,不安全,可能在精度的损失,有两种方法
1类型说明符(表达式)//c++强制转化符号
2(类型说明符)表达式 //c强制转化符号;
如 float z=7.56;
int a;
a=int(z);或a=(int)z;
i-=j*=x+y表达式分解如下:
double tmp1 = (double)x + y;
j = int( (double)j * tmp1 ); // j =int( 5.0 *7.5) =37
i-=j; // i = 3 - 37 = -34;
为什么C语言中int i=3,j=5;float x=2.5;double y=5.0;表达式i-=j*=x+y的值不是
请问下面c语言式子远算顺序 lint x=13,float y=1.5,double j 2+‘b
c语言中,int i=3,j=4 k=++i+j--+++i---j,结果为几?为什么?
c语言计算问题:y+=i-=j*=++x 已知y+5.0 i=3 j=5 x=2.5
Point(int i=0,int j=0):x(i),y(j){}
在C语言中,若有定义 int y=2; float z=5.5 ,x=-4.3; 则表达式y+=abs(x)+x+z的值
C语言:已有声明int x=5,y;float z=2;,则下列表达式正确的是
C语言表达式求值(float)(a+b)/2+(int)x%(int)y 其中a=3,b=-4,x=2.5,y=4.7
若x,i,j和k都是int型变量,则执行下面表达式后x的值为 C x=(i=4,j
C语言问题若x、i、j和k都是int型变量,则计算下面表达式后,x的值为( ).X=(i=4,j=16,k=32) A.
C语言..若 x,i,j和K都是int型,则执行表达式 x=(i=4,j=16,k=32)后X的值为多少?
#include int main() { int x=2,y=3; float i; i=float(x); prin