printf("%d %d ",n,~n)^10&&main(n+2);

#include <stdio.h>
int main(int n)
{
//int a = 0;
//n=999;
    //a = printf("%d %d ",n,~n);
//printf("%d\n",a);

printf("%d %d ",n,~n)^10&&main(n+2);
//return 0;
}


/**********************************************************************************


^_^ ^_^ ^_^ ^_^


分析:
1
main函数原型 int main(int argc, char *argv[]);
argc 是传个main函数的参数个数,也就是例子中的n,在vc中默认n为1


2
printf函数原型int printf( const char *format [, argument]... );   
返回值
Return Values  // 查看MSDN 或者linux下的相关帮助文档
returns the number of characters printed, or a negative value if an error occurs.
也就是返回打印在屏幕中的控制台的字符数


3
C语言运算符的优先顺序: () > ~ > ^ > &&
函数第一次调用时printf函数打印1 -2 ----》第一次printf返回3
那么什么时候停止打印呢? 也就是printf函数的返回值和10相异或为0 这时就 停止 main(n+2)的递归调用,所以程序结束。
当 n=999时,printf返回值是10,10^10 的值是0,这时函数停止调用,所以最后打印出来的是999,-1000  ^_^ ^_^


/ 下面几句是测试语句 /
int a = 0;
n=999;
a = printf("%d %d ",n,~n);
printf("%d\n",a);


还有注意一下:main函数是有返回值的,正常情况是返回0


**************************************************************************/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值