C printf(“d”,5)和printf(“5”)之间的差异 //(1) #包括 int main(){ printf(“%d”,5); } //(2) #包括 int main(){ printf(“5”); }
(1)代码块和(2)代码块之间的区别是什么?您说的是printf还是main?我想你说的是 返回值 成功返回后,这些函数返回打印的字符数(不包括用于结束字符串输出的空字节)。 函数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意味着输出被截断。(另请参见下面的注释。) 如果遇到输出错误,则返回负值 这两个电话都应
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 return2
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