@Arbalest-Laevatain
2018-06-06T12:50:32.000000Z
字数 620
阅读 572
C语言
float a=1/2;
printf("a=%f\n",a);
结果:
a=0.000000
原因分析:
由于常量1和2均是整型,而整型量之间相除,如果结果是小数会直接把小数点后面的舍去,所以输出是0
正确的做法是:
float a=1/2.0;
//或 a=1.0/2;
由于计算的时候会自动进行强制类型转换,把所有变量向精度高的方向转,而float精度比int高,故输出会是小数
关键在于分清,前缀与后缀的区别:
前缀加:
++i;
当前表达式运行前,i+1,然后运行表达式
后缀则是
i--;
当前表达式运行后,i+1,运行表达式的时候,i还是之前的值
一个运算符操作数越多,优先级越低
单目双目三目
赋值运算符比绝大多数的运算符都低
除了赋值运算符之外,都是从左往右,赋值运算符是从右往左
类型符一定在括号里面
(int)x;
(float)(x+y);
(double)(5%3);
int a=1,b=2;
if ((a=a-1) && (b=b+3))
a+1;
printf("a=%d,b=%d\n",a,b);
return 0;
输出结果:
a=0,b=2;
int a=1,b=2;
if ((b=b+3) || (a=a-1))
a+1;
printf("a=%d,b=%d\n",a,b);
return 0;
输出结果:
a=1,b=5;