float和double类型变量用%d输出的问题 |
您所在的位置:网站首页 › c语言double语句怎么用 › float和double类型变量用%d输出的问题 |
在敲代码时遇到了printf("%d\n", pow(2.0, tmp) - 1);的问题,发现当tmp=1时,控制台上输出为0。 在可变长参数函数(例如printf函数)或者不带原型声明函数中,在调用该函数时C自动进行类型提升(在调用函数时如果声明这个函数那么则不会提升),提升如下: ——float类型的实际参数将提升到double ——char、short和相应的signed、unsigned类型的实际参数提升到int ——如果int不能存储原值,则提升到unsigned int 然后,调用者将提升后的参数传递给被调用者。C标准对默认实际参数提升规则有明确规定。也就是说, 带有可变长参数列表的函数, 绝对不会接受到char类型的实际参数。 考虑如下代码:
同理printf("%d\n", pow(2.0, tmp) - 1);当tmp=1时,1.0在内存中的存储为 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |