#include<stdio.h>
void main()
{
int i=1,j=-1;
if(printf("%d",i)<printf("%d",j))
printf("%d",i);
else
printf("%d",j);
}
这个程序在这里是什么输出&amp;怎么样?
答案 0 :(得分:0)
printf
返回写入的字符总数。 “-1”长于“1”。所以......
答案 1 :(得分:0)
该程序调用未定义的行为,因为main
必须至少定义为int main()
,并且必须返回int
或exit
。特别是输出可能不会被刷新,因此是空的。
假设出现完整输出,则确切输出未定义,因为<
的操作数可以按任意顺序进行评估。其余的看起来微不足道。
答案 2 :(得分:0)
答案是&lt;&lt;&lt; 1 -1 1&gt;&gt;&gt;。因为printf语句返回int值,即在屏幕上成功写入的字符数{在if条件下,第一个printf返回1,第二个printf返回2}。因此,如果条件变为1&lt;这种情况是真的。所以,执行true block。
答案 3 :(得分:0)
需要评估if语句以获取分支。为此,两个printf调用(在if语句中生成)将以任一顺序执行。这将导致1和-1在o / p缓冲区中打印,但不保证首先打印哪个数据。 现在,一旦if条件的值已知(false),将执行else分支内的printf调用。它将在缓冲区中打印1。最后作为退出处理程序的一部分,将刷新o / p缓冲区。这将导致在stdout上打印1-11或-111。