C语言1/3*3的结果是?
测试环境:
VC6.0
1、求1/3 * 3
的值
示例代码如下:
1 |
|
运算结果是 0
,为什么是0呢?
1/3*3
表达式
先计算1/3,两边都是整型,其结果也是整型,所以
1/3结果为
0,接着计算
0*3,两边都是整型,其结果为也为整型,结果为0,最后以
%d格式化输出,所以输出结果为
0
2、求1.0/3 * 3
的值
示例代码如下:
1 |
|
运算结果是 1.000000
,为什么是1.000000
呢?
先计算 1.0/3
,1.0为浮点型,3为整型,两边的数据类型不同,那如何计算呢。
在C语言中,不同数据类型的混合运算遵循以下原则:
(1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算
(2)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算
(3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算
(4)char型和short型参与运算时,必须先转换成int型
1 |
|
那么为何会输出1.00000
简单证明:
1 |
|
分数法
1 |
|
代数法
1 |
|
所以,1.0/3 * 3
的运算结果为1.000000
(其结果数据类型为双精度,默认输出6位小数)
3、求3/2
的值
其值为1
,这里就不再分析了,根据上面两个例题,相信你可以很容易就分析出来
示例代码如下:
1 |
|
注:这里有一个需要注意的问题,使用printf
语句打印的时候,格式化数据类型要正确,比如 3/2
的结果是整形,那么请以%d
的格式输出。
这里留一个小疑问,如果3/2
以%f
的格式输出,其结果又是什么呢?
C语言1/3*3的结果是?
http://cxycsx.vip/2023/08/31/其他/C语言1-3-3的结果是?/