一段c代码看不懂 求大侠指导
代码很简短,但就是看不懂,不晓得谁写的。问了好多人都不会。
代码如下,可以打印乘法口诀表,只使用了一个变量。
求指导啊。
#include<stdio.h>
int r=1;
main(_)
{
printf("%d*%d=%-4d",_,r,_*r),++_>r?puts(""),r++^9&&main(1):main(_);
}
谢谢啦!!!!!!!
[解决办法]
/*程序是这样执行的
第一次T=r=1所以打印出1*1=1
接着进入三元运算符"?:"判断++T>r时候成立,这里是成立的,输出换行(puts(""))执 "r++^9!(=0)执行main(1)此时T=1,r经过++后r=2"
1*2=2,此时发现++T>r不成立执行main(T),输出2*2=4,到目前为止输出如下
1*1=1
1*2=2 2*2=4
剩下部分同上分析
*/
注意r++^9&&main(1)是一个逻辑运算符.只有当r++^9!=0是执行main(1)
[解决办法]
int r = 1;//代表行数int _tmain(int argc, _TCHAR* argv[]){ printf("%d*%d=%-4d",argc,r,argc*r); argc++;//argc代表列数 if(argc > r)//如果列数大于行数,则要换行 { puts("");//换行 if(r!=9)//当r!=9时,r^9一定是真,这里是用来控制递归结束的:到第9行时结束程序。 { r++; _tmain(1, NULL);//把列数重新置为1。 } } else _tmain(argc, NULL);//列数+1后,继续打印。 return 0;}