我正在开始一个关于 C 的 youtube 课程。
他们表明,要打印变量的值,必须使用此运算符%
。
例子:
int suma, a, b;
a=2;
b=3;
suma=a+b;
printf("El valor de la suma es %i", suma);
在 integer %i
、 float%f
和 char的情况下%c
我想知道这个运算符还有什么其他用途以及它根据值有什么属性,因为我看到我可以使用%.1f
或分隔显示的小数%.2f
我正在开始一个关于 C 的 youtube 课程。
他们表明,要打印变量的值,必须使用此运算符%
。
例子:
int suma, a, b;
a=2;
b=3;
suma=a+b;
printf("El valor de la suma es %i", suma);
在 integer %i
、 float%f
和 char的情况下%c
我想知道这个运算符还有什么其他用途以及它根据值有什么属性,因为我看到我可以使用%.1f
或分隔显示的小数%.2f
在上下文中,您定义的
%
不是运算符而是格式说明符。在 C 中,格式说明符告诉可变参数函数使用哪种类型的参数。
在最简单的情况下:
告诉编译器优化
printf
类型参数的函数调用char *
。最常见的格式说明符可以是:
*:这些说明符可能不符合标准。
在此上下文之外,它是一个模运算符,用于获得除法的余数。
编辑:
此外,正如我在开头提到的,它是一个格式说明符,它们也可以用于用零或您希望的方式填充空格:
这将导致:
或者还有:
后者将打印限制在 a 中小数点后的前 3 位
float
。编辑2:
我觉得这个答案中缺少一些信息,现在这个版本中出现了,那就是格式说明符里面有一些魔力。
让我们按类型组织它:
char *
o "C-String":它的说明符是%s
,但是如果我们这样做会发生什么:%.2s
?假设我们有以下字符串:
"Hola Mundo"
并且我们这样做:答案是:仅限于打印当前参数的3个字符;以同样的方式,它可以用来分隔字符串:
如果我们混合它们呢?
如您所见,字符串的所有格式在 C 中都是可能的。
格式说明符中的字符
*
必须在函数调用中包含一个附加参数以指定其值,如上面提到的示例中所示。下面是一个表格,其中包含可以给参数的可能格式类型,请参见最后参考(维基百科):
该格式实际上适用于所有类型,但您仍然必须小心。
一些参考资料:
printf
(C++ 参考)printf(const char fmt, ...)
printf
它也用于模运算符,它只不过是除法的余数。例如,下面是一小段 C 代码,用于判断数字是奇数还是偶数:
这应该显示“The number is even”,因为如果你将一个偶数除以 2,余数将始终为 0。我希望它对你有所帮助。