kry*_*ght 1 c casting type-conversion
#include<stdio.h>
int main(){
float a,b;
a=5;
b=12;
printf("Result:%f",a+b);
return 0;
Run Code Online (Sandbox Code Playgroud)
}
如果我将结果显示为float,我得到17.0.No问题但是我显示一个+ b为int,我得到的结果为0.
我尝试了不同的a&b值来寻找一些模式.无论a和b的值是什么,当显示为int时,a + b显示为0.
显示为float时没有问题.
我的理由是,如果我尝试将一个浮点数打印为int,则小数部分将被截断.
我错在哪里.我通过类型转换教程搜索但无法解释这种差异.
可能这是一个非常基本的疑问,但我无法推断出这种差异背后的原因.我不知道标题是否合适.请继续.
我是初学者.如果你能提供一个我可以参考这些疑问的来源,我会感激不尽,并且不会因为愚蠢的怀疑而烦扰社区.
自动类型转换差异
没有printf()基于格式字符串的参数的自动转换.的争论printf()后,第一个是根据推广默认参数促销活动,其中涉及促进float到double,但再次重申,不采取格式字符串考虑在内.
无论a和b的值是什么,当显示为int时,a + b显示为0.
如果你做了相同的printf("%d", a + b);,它是不正常的,因为它不应该.从技术上讲,它会调用未定义的行为.实际效果取决于编译平台,特别是参数传递约定.印刷0是其中一种可能性.
什么应该工作printf("%d", (int) (a + b));,你可以完全期望打印17.
| 归档时间: |
|
| 查看次数: |
32 次 |
| 最近记录: |