我现在理解了,NUM=(M+1)*M/2=(N+1+1)*N+1/2=(2+1+1)*2+1/2=8,宏定义跟平常的数学计算不一样,宏定义只把数依次简单的代入就可以了,不需要加任何的括号。希望对你有帮助哦,现学现卖。呵呵
在C语言中为什么执行过 #define N 2 #define M N+1 #define NUM (M+1...
所以 define NUM (M+1)*M\/2 展开后NUM是(2+1+1)*2+1\/2 要得到你想要的结果 把后面的M括起来,所以宏里面要尽量加多点括号 define NUM (M+1)*(M)\/2 现在在C++还有一种处理就是用inline函数或者const常量
#define N 2#define M N+1#define NUM 2*M+1void main(){ printf...
define M (N+1)define NUM (2*(M)+1)void main(){ printf("%d\\n",NUM);} 这样子才能够得到结果为:7,楼上的有个小错误#define NUM (2*M+1)这里也是直接替换M 一样不会得到7. 希望对你有所帮助!
...N 2 #define M N+1 #define NUM (M+1)*M\/2 main() { int i,n=0...
因为NUM最终计算结果为5,因为i的初值为0,所以循环了6次
...#define N 2 #define M N+1 #define NUM 2*M+1 main( ) { int...
define是用一段文字代替另一段文字 编译的时候N是“2”,M是“N+1”,所以M最后为“2+1”NUM是“2*M+1”,把其中的M换成“2+1”可以得到 NUM为“2*2+1+1”为6,系统不会给M自动加括号 非要用宏来实现的话只能在每次使用N,M和NUM的时候手动加上括号。一般用常量变量,这样写 const i...
C语言 为什么 #define n 4 #define m n+2 #define num 2*m
define n 4 \/\/用4替换n define m n+2 \/\/用n+2替换m,用4替换n,等价于:#define m 4+2 define num 2*m+1 \/\/用2*m+1替换num,用4+2替换m,等价于:#define num 2*4+2+1 因此,num=2*4+2+1=11。文本替换不会自动给变量加上括号。因此最后的答案就是循环11次。
下列程序中,for循环执行的次数是: }
8次 因为#define其实是字符从替换,所以NUM用(M+1)*M\/2来替换,而M用N+1来替换,也就变成(N+1+1)*N+1\/2,而N用2替换,就变成(2+1+1)*2+1\/2=8,所以是8次
在C语言中(m+1)*m\/2怎么运算的
define num (m+1)*m\/2 运行时相当于 (n + 1 + 1) * n + 1 \/ 2 相当于 (2 + 1 + 1) * 2 + 1 \/ 2 所以答案是8;define m n+1 ;在程序运行时,直接在m的地方替换为n + 1;然后再将n的地方替换为 2,这样才开始运算;所以define后最好打(),免得出错 ...
...M 3 #define N M+1 #define NN N*N\/2 void main() { int a; print...
代码请发全,估计问题是#define引起的 因为#define只是在编译的时候,将后面的代码代替前面的代码,比如 M*N 结果:3*M+1
c语言中#define N 1+2后,N*N等于多少啊?
等于5,在c语言中define定义后不会自动计算,你定义了N 1+2在计算时c语言不会自动变为3,而仍然是1+2的形式,那么你计算N*N的时候就成了1+2*1+2结过就是5.
请帮忙看一下为什么这个for循环会循环8次?
这是个简单的数学问题 ,N=2 ,M=N+1(即3),NUM=(M+1)*M\/2(即8)后面for循环中条件是小于等于NUM 那不就是8次了。