O que o f
depois dos números indica? É de C ou Objective-C? Existe alguma diferença em não adicionar isso a um número constante?
CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, 50.0f);
Você pode explicar por que eu não apenas escreveria:
CGRect frame = CGRectMake(0, 0, 320, 50);
objective-c
c
floating-point
typeoneerror
fonte
fonte
Em caso de dúvida, verifique a saída do montador. Por exemplo, escreva um pequeno trecho mínimo, ou seja, como este
Em seguida, compile-o no montador com a
-S
opção.Salve a saída do assembler no
test.s
arquivo, remova.0f
-a das constantes e repita o comando de compilação. Em seguida, faça umadiff
do novotest.s
e do anterior. Acho que isso deve mostrar se existem diferenças reais. Acho que muitos têm uma visão do que acham que o compilador faz, mas no final do dia, deve-se saber como verificar quaisquer teorias.fonte
-O
. Estou em i686-apple-darwin10-gcc-4.2.1 (GCC)Às vezes, há uma diferença.
fonte
Ele informa ao computador que este é um número de ponto flutuante (presumo que você esteja falando sobre c / c ++ aqui). Se não houver f após o número, ele é considerado um duplo ou um inteiro (dependendo se existe um decimal ou não).
fonte
Um literal de ponto flutuante em seu código-fonte é analisado como um duplo. Atribuí-lo a uma variável do tipo float perderá a precisão. Muita precisão, você está jogando fora 7 dígitos significativos. O postfix "f" permite que você diga ao compilador: "Eu sei o que estou fazendo, isso é intencional. Não me incomode com isso".
As chances de produzir um bug não são tão pequenas assim. Muitos programas caíram em uma comparação mal concebida de ponto flutuante ou assumindo que 0,1 é exatamente representável.
fonte
O
f
que você está falando provavelmente pretende dizer ao compilador que ele está trabalhando com um float. Quando você omite of
, geralmente é traduzido como um duplo.Ambos são números de ponto flutuante, mas a
float
usa menos bits (portanto, menores e menos precisos) do que adouble
.fonte
É uma coisa em C - literais de ponto flutuante são de precisão dupla (double) por padrão. Adicionar um sufixo f torna-os uma precisão única (float).
Você pode usar ints para especificar os valores aqui e, neste caso, não fará diferença, mas usar o tipo correto é um bom hábito de se adquirir - consistência é uma coisa boa em geral, e se você precisar alterar esses valores mais tarde, saberei à primeira vista de que tipo eles são.
fonte
De C. Significa constante literal flutuante. Você pode omitir "f" e ".0" e usar ints em seu exemplo por causa da conversão implícita de ints em flutuantes.
fonte
É quase certo de C e reflete o desejo de usar um tipo 'flutuante' em vez de um 'duplo'. É semelhante a sufixos como L em números para indicar que são inteiros longos. Você pode apenas usar inteiros e o compilador irá converter automaticamente conforme apropriado (para este cenário específico).
fonte
Geralmente informa ao compilador que o valor é a
float
, ou seja, um inteiro de ponto flutuante. Isso significa que ele pode armazenar inteiros, valores decimais e exponenciais, por exemplo1
,0.4
ou1.2e+22
.fonte