程序:
int main( )
{
printf("%d",printf("%d %d",5,5)&printf("%d %d",7,7));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
5 57 73
Run Code Online (Sandbox Code Playgroud)
我是C的新手,我可以猜到5 57 7来自哪里,但不知道3来自哪里.有人可以解释输出吗?
如果您将二进制AND应用于3和3(这是两个嵌套printf调用的返回值),您将得到3结果.
请注意,代码实际上包含未定义的行为,因为未定义嵌套调用的顺序.
printf函数的返回值是传输的字符数,如果有错误则返回负值.
printf("%d %d",5,5)3如果没有错误则返回
printf("%d %d",7,7)3如果没有错误也返回
所以printf("%d %d",5,5) & printf("%d %d",7,7)是3 & 3用于求3.