#include<stdio.h>
void main()
{
char ch;
if((ch=printf(1234))
printf("A");
else
printf("B");
}
答案是B: 但我不知道ch赋予了什么值以及printf(1234)
会发生什么答案 0 :(得分:3)
来自printf(3)
手册页:
Return value Upon successful return, these functions return the number of characters printed (not including the trailing '\0' used to end output to strings).
答案 1 :(得分:3)
您可以学习使用调试器并查看已为ch
分配的值。或者您可以在程序和程序中添加printf("%d\n", ch);
并按照这种方式查看。
或者你可以阅读documentation,就像Ignacio Vazquez-Abrams所指出的那样。
答案 2 :(得分:2)
printf
返回输出中写入的字符数。但是,您的代码中有几个错误。它应该是这样的:
#include<stdio.h>
int main()
{
int ch;
if(ch=printf("1234"))
printf("A");
else
printf("B");
return 0;
}
在这种情况下,ch将为4,输出应为1234A。
更新:根据收到的评论进行修改。
答案 3 :(得分:1)
我想指出你的代码可能无法在大多数现代编译器上编译,特别是因为第5行。
但假设你的编译器允许你这样做,printf
将返回0
(这是你的ch
),因为没有打印任何内容。因此,答案是B。
答案 4 :(得分:-1)
printf的签名是
int printf(const char* restrict fmt, ...)
你已经为第一个参数传递了一个整数。
printf(1234)
的行为是 undefined 实现已定义。
5.整数可以转换为任何指针类型。除非事先指明,否则 结果是实现定义的,可能没有正确对齐,可能不指向 引用类型的实体,可能是陷阱表示。 (6.3.2.3指针)
当1234恰好指向包含格式说明符的有效字符串时,行为未定义。