#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
**************************************************************************/
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
**************************************************************************/