c语言double可以自动转float,关于float 跟double的转换

关于float 和double的转换

1、C是不是把floating point常量读成double?

2、C把float传给printf是不是将其转换成double?

------解决思路----------------------

用clang编译

1、C是不是把floating point常量读成double?     至少在 flloat f = 9.9 中不是    但 f += 1.0 中是

2、C把float传给printf是不是将其转换成double?       好像真是这样

int main(){

float f = 9.9;

double d = 9.9;

printf("%d %f %lf",sizeof(double),f,d);

}

/*

.section__TEXT,__text,regular,pure_instructions

.section__TEXT,__literal8,8byte_literals

.align3

LCPI0_0:

.quad4621762822593629389     ## double 9.9000000000000003

.section__TEXT,__literal4,4byte_literals

.align2

LCPI0_1:

.long1092511334              ## float 9.89999961

.section__TEXT,__text,regular,pure_instructions

.globl_main

.align4, 0x90

_main:                                  ## @main

.cfi_startproc

## BB#0:

pushq%rbp

Ltmp2:

.cfi_def_cfa_offset 16

Ltmp3:

.cfi_offset %rbp, -16

movq%rsp, %rbp

Ltmp4:

.cfi_def_cfa_register %rbp

subq$32, %rsp

leaqL_.str(%rip), %rdi

movabsq$8, %rsi

movsdLCPI0_0(%rip), %xmm0        sd是和双精度有关的

movssLCPI0_1(%rip), %xmm1        ss是和单精度有关的

movss%xmm1, -4(%rbp)

movsd%xmm0, -16(%rbp)

cvtss2sd-4(%rbp), %xmm0     cvt应该是convert的意思

movsd-16(%rbp), %xmm1

movb$2, %al

callq_printf

movl$0, %ecx

movl%eax, -20(%rbp)         ## 4-byte Spill

movl%ecx, %eax

addq$32, %rsp

popq%rbp

retq

.cfi_endproc

.section__TEXT,__cstring,cstring_literals

L_.str:                                 ## @.str

.asciz"%d %f %lf"

.subsections_via_symbols

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值