[](()代码二:精度问题
//精度问题。。。
#include <stdio.h>
int main()
{
int x;
float y=5.5; //y*3=16.500000
x=(float)(y*3+((int)y)%4); //首先 (int)y=5,其次 ((int)y)%4=1
printf(“x=%d\n\n”,x);
printf(“-----------\n\n”);
printf(“测试:\n\n”);
printf(“(int)y = %d\n\n”,(int)y);
printf(“((int)y) %% 4 = %d\n\n”,((int)y)%4);
printf("y3=%f\n\n",y3);
printf("(float)(y3+(((int)y)%4) = %f\n",(float)(y3+((int)y)%4));
//又由于x是整型,所以17.500000取整为17
}
输出:
这里对于%的打印输出格式,我有些“取巧”了。
这题目很基础也很简单,结合注释和测试部分应该很好理解了。
[](()代码三:(?:)表达式求值
//?:表达式求值
#include <stdio.h>
int main()
{
int x=1,y=1;
int a=1,b=4,c=3,d=2;
printf(“!x || y-- = %d\n\n”,!x || y–);//!x取值为0,y–取值为1,故0||1取值为1。
printf(“a<b?a:c<d?c:d = %d\n\n”,a<b?a:c<d?c:d);
printf(“-------------------------\n\n”);
printf(“测试:\n\n”);
printf(“((a<b)?(a):(c<d?c:d)) = %d\n\n”,((a<b)?(a):(c<d?c:d)));
//对于上式,a<b为真,直接取a=1,最后结果亦为1 (后边不再执行)。c<d为假,取d=2。
printf(“-------------------------\n\n”);
printf(“再次测试:\n\n”);
printf(“a<b?a:666 = %d\n\n”,a<b?a:666); //1<4 √√ 故取a=1
printf(“c<d?c:d = %d\n\n”,c<d?c:d); //3<2 ×××故取d=2
return 0;
}
测试输出:
我想,注释已经说的比较清楚了耶!
[](()代码四:轻松一刻~ ~!
//轻松一刻 ~ ~!下列程序的输出结果为
#include <stdio.h>