C语言中关于#define的使用

如题所述

我明白你的意思
你是想动态定义数组的大小
不过明确告诉你
在c语言中
不允许对数组的大小做动态定义
你的意思
输入几个数
然后数组的大小就是这组数据的个数
用#define
xxxx
xxx
这是没用的
先纠正一下
#define
n
99
后面不能加分号
这个要注意
#define
是预定义命令
在c++中相当于const
就是用99替代n
你程序不能正确运行是因为你a[n]
这句话就是说你定义了数组的大小为99
而你下面就是输入函数scanf()
就是说你必须输入99个数据到数组中
程序才会继续执行
#define
n
99中的n
在程序中是不能被改变的
它的值就是99
要改变只能在#define
n
99这句话中把99改掉
所以是不能在程序中把n的值随便改的
不信的话你可以把
99改成小点的数输入看看
~
记住一点
c语言中不能动态定义数组的大小~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-26
如果宏确实是这样定义的:#define
MIN(A,B)
((A)<=(b)?(A):(B))
那么least
=
MIN((*p)++,
b);
当*p
=
5,
b
=
5的时候,这个MIN宏会得到6。
本来这个宏是用来求两个值中的较小的一个值,但是同时又要计算的时候(*p)++,就会出现严重的错误。
#include
<stdio.h>
#define
MIN(A,B)
((A)<=(b)?(A):(B))
int
main()
{
int
a
=
5,
b
=
5;
int
*p
=
&a;
printf("%d\n",
MIN((*p)++,
b));
return
0;
}
第2个回答  2019-04-07
分析:#define可以简单的理解为字符串替换!
这里你用*p++代替A,b代替B,代入MIN宏:
((*p++)<=(b)?(*p++):(b))
--------
剩下的工作自己分析啦!
第3个回答  2019-07-17
编译错误...
是不是写错了
//#define(A,B)
((A)<=(b)?(A):(B))
#define
MIN(A,B)
((A)<=(b)?(A):(B))//这样的?
-------------
换后

((*p++)<=(b)?
(*p++):(b))
比较*p和b,然后p指向后一个元素
如果真,显示*p,
p在指向后一个元素
假的话,
只显示b
第4个回答  2019-06-27
如果宏确实是这样定义的:#define
MIN(A,B)
((A)<=(b)?(A):(B))
那么least
=
MIN((*p)++,
b);
当*p
=
5,
b
=
5的时候,这个MIN宏会得到6。
本来这个宏是用来求两个值中的较小的一个值,但是同时又要计算的时候(*p)++,就会出现严重的错误。
#include
<stdio.h>
#define
MIN(A,B)
((A)<=(b)?(A):(B))
int
main()
{
int
a
=
5,
b
=
5;
int
*p
=
&a;
printf("%d\n",
MIN((*p)++,
b));
return
0;
}
相似回答