c语言 %f 变量,f在数字之后
c language %f variable, and f after number
我想知道为什么有必要写%f on variable, and f after the number itself?。
我理解如果我想对机器进行特定,需要在数字后面写 f,但是当我在同一行声明变量是 f 时,为什么我需要这样做?
数字后面的 f 是为了使它成为浮点数而不是双精度数。在 C 中,3.14
是双精度数,而 3.14f
是浮点数。同样,您可以附加 u
和 l
来使数字无符号 and/or 或长; 例如,42U
是unsigned int,42L
是long,42UL
是unsigned long,42ULL
是unsigned长长.
%f
是一个格式说明符,用于告诉函数变量的类型。 C 并没有真正的原生类型自省,printf
也不是魔法。签名看起来像:
int printf(const char *format, ...);
除非您在格式字符串中指定它,否则它不知道您传递的是什么。您还应该记住,可变函数没有类型安全性;你可以传递任何你想要的东西。例如,printf("%s", 1729);
是完全可以接受的。一些编译器能够确保格式字符串与您实际传递给它们的内容相匹配,但那是一个扩展,而不是 C 本身的一部分。
我想知道为什么有必要写%f on variable, and f after the number itself?。 我理解如果我想对机器进行特定,需要在数字后面写 f,但是当我在同一行声明变量是 f 时,为什么我需要这样做?
数字后面的 f 是为了使它成为浮点数而不是双精度数。在 C 中,3.14
是双精度数,而 3.14f
是浮点数。同样,您可以附加 u
和 l
来使数字无符号 and/or 或长; 例如,42U
是unsigned int,42L
是long,42UL
是unsigned long,42ULL
是unsigned长长.
%f
是一个格式说明符,用于告诉函数变量的类型。 C 并没有真正的原生类型自省,printf
也不是魔法。签名看起来像:
int printf(const char *format, ...);
除非您在格式字符串中指定它,否则它不知道您传递的是什么。您还应该记住,可变函数没有类型安全性;你可以传递任何你想要的东西。例如,printf("%s", 1729);
是完全可以接受的。一些编译器能够确保格式字符串与您实际传递给它们的内容相匹配,但那是一个扩展,而不是 C 本身的一部分。