非常初学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并且它可以工作。我之前尝试过搜索答案,但如果你不知道要搜索什么,就很难找到答案。
答案 0 :(得分:37)
答案 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));