#define s(x) x*x #include <stdio.h> main() {int k=5,j=2,b; b=s(k+j+1); printf("b=%d",b); }

#define s(x) x*x
#include <stdio.h>
main()
{int k=5,j=2,b;
b=s(k+j+1);
printf("b=%d",b);
}
它是怎么计算的?
b=s(k+j+0)?
b=s(k+j+2)?

s(k+j+1)相当于s(5+2+1)

s(x)会被替换为x*x。因此s(5+2+1)被替换为5+2+1*5+2+1。注意,这是文本替换,不是数学代换。

因此最终结果为5+2+5+2+1=15。

温馨提示:内容为网友见解,仅供参考
无其他回答

#define s(x) x*x #include <stdio.h> main() {int k=5,j=2,b; b=...
s(k+j+1)相当于s(5+2+1)s(x)会被替换为x*x。因此s(5+2+1)被替换为5+2+1*5+2+1。注意,这是文本替换,不是数学代换。因此最终结果为5+2+5+2+1=15。

#include<stdio.h> #define S(x) (x)*x*2 main(){int k=5,j=2;print...
正确答案是49,1(运行过)解析:S(K+J)就是将x的地方都替换为k+j,所以替换之后S(K+J)等同于(k+j)*k+j*k+j*2 = (5+2)*5+2*5+2*2=49 那么同理S(K-J)等同于(k-j)*k-j*k-j*2 = (5-2)*5-2*5-2*2=1

#include <stdio.h> #define S(x) x*x void main() { int a,k=3,m=...
S(k+m) 替换后就是k+m*k+m k = 3 m=1 所以就是3+1*3+1 就是7

#include <stdio.h> #define S(x) x\/x
S(k+j)=k+j\/k+j=5+2=7 S(j+k)=j+k\/j+k=2+2+5=9 预定义宏并不是函数,而是简单的字符替换

有什么问题?#include<stdio.h> #include<math.h> void main() { f...
对于这个问题,你输入scanf不要加换行符,那样会读不出你需要的参数类型

#include<stdio.h> void main() { char a='本金',b='年数',c='年利率...
{int x ;printf(“%d\\n”,(x=4*5,x*2,x+20));}A)20B)40C)60D)809.执行以下程序后的输出结果是( )。#include "stdio.h"void main(){int i = 0, j = 0, a = 6;if ((++i0)||(++j0)) a ++;printf("i=%d, j=%d, a=%d\\n", i, j, a);}A)i=0, j=0, a=6B)i=...

#include<stdio.h> #include<math.h> int main() {
程序可以改正简化如下(见注释),已经调试正确,可直接用电脑端查看拷贝:include<stdio.h>int main(){ unsigned int A, B, B_img, product;\/\/正整数,所以定义用无符号整型;product就是结果 do { scanf("%d%d", &A, &B); product = 1;\/\/结果赋初值,并且保证0次方也正确 ...

#define S(x) PT*x*x c 语言中#define的用法
因为宏定义#define语句属于编译预处理,它不属于c语言语句。c语言规定每一条语句后面要加上分号,但编译预处理不是c语言语句,所以不必遵守此规定。

#include<stdio.h> int main(void)
c="\\x41" 改成 c=0x41;

#include<stdio.h> void main() { int a,b,sum; a=
include<stdio.h> int add(int x,int y); \/\/ 加1行原型声明 void main(){} int add(int x,int y){ int z;z=x+y;return(z);}

相似回答