【发布时间】:2011-10-21 10:11:06
【问题描述】:
我刚刚偶然发现,既然 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;
}
我说的对吗?我不关心它在哪里被使用。只是想知道我的理解是否正确。
【问题讨论】:
-
它有效,但效率低下,并且会在标准输出上产生虚假输出。
-
返回变量值的打印表示的长度。 printf 也有一个副作用:它打印东西 :) 所以它不如没有副作用来计算长度的函数那么干净。
-
@LudovicKuty:同意。但是可以说我有一个函数可以打印它需要找到长度的变量。我打印了我在上面的 sn-p 中所做的变量及其长度。那么在这种情况下,编写干净的代码仍然存在问题吗?
-
@PaulR:为什么输出必须是虚假的?可以举个例子吗?
-
@Ajai:您会得到虚假输出,因为 printf 有副作用,即它会在标准输出上生成输出 - 所以对于您要评估的每个变量,您将在标准输出上
printfing 该变量。