此简单的C语言问题求解!谢谢了!

来源:百度知道 编辑:UC知道 时间:2024/06/04 04:57:44
#include "stdio.h"
#define S(x) x*x
main()
{int k=1;
while(k<=4)
{
printf("%d,",S(k++));
k++;
}

}

求输出值,请高手解析下!谢谢了!

简单哦
k=1时
有k++*k++ 因为x*x 一定要直接放进去
又因为++得优先级比*高,所以先算++
取K值,K+1=2 有1 继续循环
k=2时
k++*k++ 2*2=4 k+1=3 继续循环
k=3时
k++*k++ 3*3=9 k+1=4 继续循环
k=4时
k++*k++ 4*4=16 k+1=5 中断退出循环,输出结果

输出值是16

这里是带参数的宏
编译后程序变成:
#include "stdio.h"
main()
{int k=1;
while(k<=4)
{
printf("%d,",(k++*k++));
k++;
}
}
1*1=1,k经过三个++后,变成4
4*4=16,k经过三个++后,变成7

我猜是
1
9

C语言不熟悉,呵呵。先算S(x), 然后k++两次
学习,飘过。