我刚刚偶然发现,既然printf返回它打印到输出流的字符数,为什么不使用它来查找c中任何变量的长度呢?
代码是这样的,

#include<stdio.h>
int main()
{
 char *a="Length";
 int i=1000;
 printf("Size: %d\n",printf("%d\n",i)-1);
 printf("String Size: %d",printf("%s\n",a)-1);
 return 1;
}

我说得对吗?我不关心它被用在哪里。只是想知道我的理解是否正确。

最佳答案

“任何变量的长度”是什么意思?您是指用于存储变量的字节数(使用sizeofstrlen函数更好地实现)还是变量的字符串表示的字节长度?
对于后者,您应该小心,因为您可以使用格式选项来实际修改结果。请考虑以下示例:

float num = 10.0f;
printf("%.10f", num); // return value should be 13
printf("%f", num);    // return value depends on the implementation of printf and the float value supplied

此外,您还必须考虑除小数点后一位之外还有其他表示形式。
正如其他人已经指出的,printf具有它实际写入stdout的副作用。如果不需要,可以使用snprintf写入缓冲区而不是stdout
char buffer[256];
int x = 10;
snprintf(buffer, sizeof(buffer), "%d", x); // return value is '2'

关于c - 一个衬里找到一个变量的长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7847945/

10-11 21:19