C printf(“d”,5)和printf(“5”)之间的差异 //(1) #包括 int main(){ printf(“%d”,5); } //(2) #包括 int main(){ printf(“5”); }

C printf(“d”,5)和printf(“5”)之间的差异 //(1) #包括 int main(){ printf(“%d”,5); } //(2) #包括 int main(){ printf(“5”); },c,printf,C,Printf,(1)代码块和(2)代码块之间的区别是什么?您说的是printf还是main?我想你说的是 返回值 成功返回后,这些函数返回打印的字符数(不包括用于结束字符串输出的空字节)。 函数snprintf()和vsnprintf()的写入长度不超过大小字节(包括终止的空字节('\0')。如果由于此限制而截断了输出,则返回值是在有足够空间的情况下写入最终字符串的字符数(不包括终止的空字节)。因此,返回值大于等于size意味着输出被截断。(另请参见下面的注释。) 如果遇到输出错误,则返回负值 这两个电话都应

(1)代码块和(2)代码块之间的区别是什么?

您说的是printf还是main?我想你说的是

返回值

成功返回后,这些函数返回打印的字符数(不包括用于结束字符串输出的空字节)。 函数
snprintf()
vsnprintf()
的写入长度不超过大小字节(包括终止的空字节(
'\0'
)。如果由于此限制而截断了输出,则返回值是在有足够空间的情况下写入最终字符串的字符数(不包括终止的空字节)。因此,返回值大于等于size意味着输出被截断。(另请参见下面的注释。)

如果遇到输出错误,则返回负值

这两个电话都应该返回号码1


您的问题的答案是,它们都返回一个整数。但是,可以将整数视为字符。显示整数到字符的映射。

不同之处在于
printf(“%d”,5)
用于打印(到
stdout
)类型
int
变量的值。 而
printf(“5”)
用于打印(到
stdout
)字符串。为了更清楚,让我们稍微修改一下代码

//(1)
#include <stdio.h>

int main() {
    printf("%d", 5);
}

//(2)
#include <stdio.h>

int main() {
    printf("5");
}
//(1)
#包括
int-var=5;
int main(){
printf(“%d”,var);
}
//产出:5
//(2)
#包括
int-var=5;
int main(){
printf(“var”);
}
输出:var
如您所见,(1)中的
printf()
var
解释为
int
类型的变量,然后打印其值。
而(2)中的
printf()
var
解释为字符串并按原样打印。

两个代码块都将输出为5。 请检查图像文件。

如果您有疑问,只需尝试使用该变量的
typeof
关键字,并根据该关键字进行检查

它们都返回一个int类型??这些差异纯粹是库实现中
printf()
的代码工作的内部差异。其中一个的返回值(上面的代码只是丢弃它)是
1
int
。据我所知,没有区别。我希望一个好的编译器能为它们生成相同的汇编代码。当
1
是一个变量时,它们将不同。至于返回类型,一个函数在C中只能有一个返回类型。无关:养成用换行符终止输出的习惯:
printf(“%d\n”,1)
(或
printf(“1\n”);
或甚至
put(“1”);
)。。。对于换行符,
printf()
s return
2
Qour问题对我来说并不清楚。“1”的返回类型究竟是什么意思?您指的是什么函数的返回类型?请回答您的问题以添加此信息。ASCII表格显示整数到字符的映射,而不是整数到字符的映射。C标准不要求C实现使用ASCII。然而,这个问题并没有表明对使用整数作为字符有任何兴趣,所以在回答中根本没有必要提及它。如果OP没有给我们足够的信息。由于他们似乎对返回整数的函数可能返回字符感到困惑,因此指出字符可以被视为整数似乎是合理的。ascii表显示了整数到ascii字符的映射。
//(1)
#include <stdio.h>
int var = 5;
int main() {
    printf("%d", var);
}
//Output  : 5

//(2)
#include <stdio.h>
int var = 5;
int main() {
    printf("var");
}
Output : var