Tag: printf

使用`NULL`指针转换说明符`p`的行为是什么?

我想知道是否: void *ptr = NULL; printf(“%p\n”, ptr); 总是给出(nil)输出? 它是依赖于标准库实现,还是C99标准规范?

为什么将printf的结果传递给另一个printf工作?

以下代码如何工作? void main() { printf(“%d”, printf(“earth”)); } 这给出了输出: earth5 。

使用float格式说明符打印int变量

int main() { int a=5; float b=7.5; printf(“%d %f\n”,a,b); printf(“%d %f\n”,a,a); return 0; } 当我在gcc编译器中编译这个输出时是 5 7.500000 5 7.500000 但是在视觉工作室中,输出是 5 7.500000 5 0.000000 我无法理解gcc编译器输出。

参数化printf中的格式说明符

我有几行输出如下: printf(“%-20s %-20s %-20s %-20s %-20s \n”, “Identity”, “Identity”, “float”, “double”, “long double”); printf(“%-20s %-20s %-20s %-20s %-20s \n”, “Number”, “LHS”, “error”, “error”, “error”); 如你所见,如果我想改变它们之间的间距,我将不得不将数字改为20次。 有没有办法参数化格式说明符? 那么只改变一次会改变它们吗?

printa(“%f”,aa)当aa的类型为int 时

double a = 3.1456; int aa=2.0; printf (“%f \n”,a ); printf(“%f \n”,aa); 答案是3.145600 ,3.145599. 我尝试了不同的a值,输出aa似乎与a有一些关系。 我很迷惑。 什么原因? 〜 〜 〜 〜

我该如何打印一位?

请告诉我如何打印一下,比如printf(“%d”,bit); 。

为什么printf中相同表达式的输出与cout不同?

我正在使用Visual C ++ 2012并从命令行编译以下文件: #include int main() { printf(“%.5f”, 18/4+18%4); return 0; } 链接MSVCRT.LIB而不是LIBCMT以避免运行时错误R6002。 对于此程序,输出的值为0.00000。 但是,如果我在C ++中执行完全相同的操作 #include using namespace std; int main() { cout << 18/4+18%4 << endl; return 0; } 现在,它打印出6,就像它应该的那样。 有什么不同? 它与语言本身(C vs C ++)或输出方法(cout vs printf)有关,还是只是与MSVC的怪癖?

如何在运行时创建一个mex函数printf?

我有一个在我的MATLAB脚本中调用的mex文件。 mex函数可能需要一段时间才能运行,因此为了防止我的代码“在没有任何输出的情况下停在那里”,我在mex文件中放入了许多printf语句来输出有关正在处理的数据的一些运行信息。 但是当我调用mex函数时,它不会printf任何东西并且在int运行期间保持不变。 最后,在完成其工作后,它将printf出我想要的所有信息 – 不是在运行时,而是在完成之后 。 这不是我想要的。 所以我想知道如何使printf成为我想要的东西,而且在我想要的时候也是printf 。

用于填充字符串的printf为0

有没有办法在字段宽度的printf填充中将空格字符替换为0 使用的代码 printf(“%010s”,”this”); 似乎不适合弦乐!!

printf()是否在C中分配内存?

这个简单的方法只是创建一个动态大小为n的数组,并使用值0 … n-1对其进行初始化。 它包含一个错误,malloc()只分配n而不是sizeof(int)* n个字节: int *make_array(size_t n) { int *result = malloc(n); for (int i = 0; i < n; ++i) { //printf("%d", i); result[i] = i; } return result; } int main() { int *result = make_array(8); for (int i = 0; i < 8; ++i) { printf("%d ", result[i]); } free(result); } […]