C语言中,如果a和b都是整型,(double)a/b和(double)(a/b)所得到的结果是不一样的,这是运算顺序不同导致的。先上程序验证结果:
这是因为在下面代码中
c1 = (double)(a / b);
计算机会对a/b进行运算,因为a,b是int型,所以运算结果会自动转换成int型,如c0=33,接着强制转换为double型,此时系统中的值是33.000000,赋给c1,c1精确到小数点后2位,就是33.00。
但是在下面的代码中
c2 = (double)a / b;
系统会先对int型a进行强制转换,转换成double型,此时a在系统中的值为100.000000,接着除以int型b,因为double型数据长度比int型长,int型b会被系统自动转换为double,然后a和b相除,得到double型33.333333,并赋值给c2,最终c2输出到小数点后2位的结果是33.33。
对于新手来说,这应该是一个很容易犯错的点,需要注意。