强制类型转换
(类型)(表达式)
功能:把表达式的值转化为指定的类型
(int)(x+y) :把x+y的值转化为整型
(int)x+y :把x的值转化为整型,然后与y相加(x的值是没有任何影响的)
问题:输入任意一个正整数,判断它是否为完全平方数,如是,输出“yes!”,否则输出“no!”
分析:
输入一个正整数n
求n的平方根x // float x; x=sqrt(n);
判断x是否只有整数部分(小数部分是0),如是yes!,否则输出no! //?:
提示: ((int)(x+0.5)==x)?printf("yes!"):printf("no!");
注意:(1)(int)(x+0.5)==x 能否写成(int)x==x (不准确)
(2)floor(x+0.5)==x 完全可以(推荐)
运算符的优先级
优先级:出现在同一个表达式中时的执行的先后次序
一元运算符(++,--,!,+,-)--》强制类型转换--》算术运算符(*,/ ,%)--》加减运算符(+,-)-
-》》移位运算符(<<,>>)-->关系运算符(<,<=,>,>=)--》相等运算符(==,!=)-->逻辑与运算符(&&)-
-》逻辑或运算符(||)--》条件运算符(?:)--》赋值运算符(=,+=,-=,*=等)--》逗号运算符
表达式:
x属于(5,9)
x>5&&x<9 完全等价 (x>5)&&(x<9)
需要明确先执行什么运算符,用()把该运算符包含的表达式括起来
x=-b+sqrt(b*b-4*a*c)/2*a; //error
x=(-b+sqrt(b*b-4*a*c))/(2*a); //right
判断闰年(year)
year%400==0 || year%4==0 && year%100!=0 //right
(year%400==0)||((year%4==0) && (year%100!=0)) //right 推荐
[1]
[2]
下一页