如何用C打印

时间:2010-01-29 15:03:08

标签: c

非常初学c,实际上这是我的第一个测试程序。

我实际上无法弄清楚如何将此号码打印到终端。

#include <stdio.h>

int addNumbers(int a, int b)
{
    int sum = a + b;
    return sum;
}

int main(void)
{
    int a = 4;
    int b = 7;

    printf(addNumbers(a,b));
    return 0;
}

我确信在java中我可以用system.out替换printf并且它可以工作。我之前尝试过搜索答案,但如果你不知道要搜索什么,就很难找到答案。

5 个答案:

答案 0 :(得分:37)

试试这个:

printf("%d", addNumber(a,b))

这是documentation for printf

答案 1 :(得分:19)

printf()的第一个参数始终是一个字符串值,称为格式控制字符串。该字符串可以是常规文本,例如

printf("Hello, World\n"); // \n indicates a newline character

char greeting[] = "Hello, World\n";
printf(greeting);

此字符串还可能包含一个或多个转换说明符;这些转换说明符表示已将其他参数传递给printf(),并指定如何格式化这些参数以进行输出。例如,我可以将上面改为

char greeting[] = "Hello, World";
printf("%s\n", greeting);

“%s”转换说明符需要一个指向以0结尾的字符串的指针,并将其格式化为文本。

对于带符号的十进制整数输出,请使用“%d”或“%i”转换说明符,例如

printf("%d\n", addNumber(a,b));

您可以将常规文本与转换说明符混合使用,如下所示:

printf("The result of addNumber(%d, %d) is %d\n", a, b, addNumber(a,b));

请注意,控制字符串中的转换说明符表示其他参数的编号类型。如果传递给printf()的附加参数的数量或类型与格式字符串中的转换说明符不匹配,则行为未定义。例如:

printf("The result of addNumber(%d, %d) is %d\n", addNumber(a,b));

将导致从乱码输出到彻底崩溃的任何事情。

转换说明符还有许多其他标志,用于控制字段宽度,精度,填充,对齐和类型。查看您方便的C参考手册以获取完整列表。

答案 2 :(得分:0)

printf比这更复杂。您必须提供格式字符串,然后提供要应用于格式字符串的变量。如果你只提供一个变量,C将假设这是格式字符串并尝试打印出它在其中找到的所有字节,直到它到达终止nul(0x0)。

因此,如果你只是给它一个整数,它会快乐地在存储整数的位置进入内存,将任何垃圾转储到屏幕上,直到碰巧遇到一个包含0的字节。

对于Java程序员,我认为这是对C缺乏类型检查的一个相当粗鲁的介绍。相信我,这只是冰山一角。这就是为什么,虽然我赞扬你希望通过学习C扩展你的视野,但我强烈建议你尽你所能避免在其中编写真正的程序。

(这也适用于其他读这篇文章的人。)

答案 3 :(得分:0)

在C中,与C ++不同,您需要一个格式说明符,该说明符声明要打印的变量的数据类型-在本例中为%d,因为该数据类型是整数。 尝试printf(“%d”,addNumbers(a,b));

答案 4 :(得分:-3)

要在C中打印这些数字,请执行以下操作:

printf("%d", addNumbers(a,b));