...#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 ...
...#define N 2 #define M N+1 #define NUM 2*M+1 main() { int i...
NUM=2*2+1+1=6 把define处的东西该放的地方就行了,不要加括号
#define N 2#define M N+1#define NUM 2*M+1void main(){ printf...
define N 2 define M (N+1)define NUM (2*(M)+1)void main(){ printf("%d\\n",NUM);} 这样子才能够得到结果为:7,楼上的有个小错误#define NUM (2*M+1)这里也是直接替换M 一样不会得到7. 希望对你有所帮助!
...M N+1 #define NUM (M+1)*M\/2 main() { int i,n=0;
因为NUM最终计算结果为5,因为i的初值为0,所以循环了6次
...N 2 #define M N+1 #define NUM (M+1)*M\/2以后,NUM的值是8而不是...
宏只是字符串替代一样的,没有计算过程 所以 define NUM (M+1)*M\/2 展开后NUM是(2+1+1)*2+1\/2 要得到你想要的结果 把后面的M括起来,所以宏里面要尽量加多点括号 define NUM (M+1)*(M)\/2 现在在C++还有一种处理就是用inline函数或者const常量 ...
C++的题,带上解释,请问B的789怎么来的??
define N 2 define M N+1 define NUM (M+1)*M\/2 while(I<=NUM) ---> while(I<=(M+1)*M\/2)---> while(I<=(N+1 +1)*N+1 \/2)--->while(I<=4*2+0)所以i是 1到8 循环 i = 1 ,时 n等于 0 ,i<=8成了,执行循环 n++ 使n变为1,然后输出n的值1 i...
C语言题目,求大神赐教
define N 2 define M N+1 define NUM (M+1)*M\/2 则NUM=(2+1+1)*2+1\/2=8+0=8 所以,循环结果是8 选C
在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后最好打(),免得出错 ...
10. C语言的编译系统对宏命令的处理是( )。
define N 2 \/* 在预编译时将用下面代码中N替换成2 *\/ define M N+1 \/* 在预编译时将M替换成N+1(即2+1,N会再被替换成2)*\/ define NUM 2*M+1 \/* 如上:在预编译时NUM替换成2*M+1,即2*N+1+1,即2*2+1+1*\/ main(){int i;for(i=1;i<=NUM;i++)printf("%d\\n"...
C语言宏定义算法
首先N 定义为2,M 定义为N+1, 在编译的时候,C系统就会把这里的N变为2,下面的NUM定义为了2*M+1,在编译的时候,就直接把M变为N+1,放进去, 系统只是做了替换,如果你用 #define N 2 deine M (N+1)deine MUN 2*M+1 则可以得到MUN为2*(N+1)+1,要记住,宏只是替换,...