我刚刚偶然发现,既然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;
}
我说得对吗?我不关心它被用在哪里。只是想知道我的理解是否正确。
最佳答案
“任何变量的长度”是什么意思?您是指用于存储变量的字节数(使用sizeof
和strlen
函数更好地实现)还是变量的字符串表示的字节长度?
对于后者,您应该小心,因为您可以使用格式选项来实际修改结果。请考虑以下示例:
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/