C语言的问题:1关于define使用;2关于字符串输出。

编写了一个小程序,如下:

1 #include <stdio.h>
2 #define x include
3 #define y "stdio"
4 main()
5 {
6 char a[]="x";
7 char b[]=y;
8 int c[5]={1,2,3,4,5};
9 char d[]="Hello,world!";
10printf("a[] is %s\n",a);
11printf("b[] is %s\n",b);
12printf("%d\n",c[1]);
13printf("%s\n",&d[2]);
14}
输出结果:
a[] is x
b[] is stdio
2
llo,world!

问题:
1:第一个输出的为什么不是include呢?;
2:第4个输出结果,感觉应该像是输出储存字符串中字母l的地址,怎么会输出“llo,world!”。使用printf函数时输出列表不应该是常量、变量或表达式吗?

1、因为你使用了语句char a[]="x",在C语言中,使用双引号表示引号中的内容是一个字符串,因此你使用的语句结果是把字符串"x"赋给数组a,因此运行是程序并没有使用define进行替换。

2、语句printf("%s\n",&d[2])的含义是,从变量d[2]的地址开始,将其后(含d[2])的内容以字符串的形式输出,因为数组d的内容是"Hello,world!",因此d[2]是"l",其后(含d[2])的内容为"llo,world!",因此你得到了你输出的结果。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-05
char a[]="x";

a[]赋值是字符串"x",而不是define的x

printf("%s\n",&d[2]);
是从d数组第二个位置开始输出字符串
第2个回答  2012-12-05
第一个是字符串,不是宏命令。
%s是按照字符串输出,所以应该是个地址
第3个回答  2020-03-26
你可以定义一个只有空格的字符串
比如
#define
nstr
"
"
但是不可能把任意一个字符串定义成空格。

C语言#define的用法(2)
3、如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的`起点。面试:写一个“标准”宏MIN ,这个宏输入两个参数并返回较小的一个 define MIN(A,B) ((A) <= (B) ? (A) : (B))考察内容:1、三目表达式的使用 2、使用必须的足够多的圆括号来保证以正确的顺...

关于c语言的几个问题。
第一个:main也是函数,不过被称做为主函数。在TC里面假设你不写就默认为int型 在VC里面一定要写函数类型。void为空类型,无返回值,如果你写int或者其他的最后结束就应该加返回值。第二个:define是宏定义,我只是单纯的吧5这个字符赋给n 所谓宏定义,就是把字符串给宏名。不分配内存的。是常量,...

c语言中define的用法
1、#define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。2、define指的是可以将一个变量的值变成我们所定义的值,比如#definePI=14,那么后面的PI在使...

c语言define用法举例
defineC(x)#x x=1 替换为:A(1)--->T_1(T_##x,##符号是记号粘黏符号,将前后的字符粘黏起来。)B(1)--->'1'(#@x,#@符号会将宏的参数进行字符串字面量化,并且加‘’号)C(1)--->"1"(#x,#符号会将宏的参数进行字符串字面量化,并且加""号)4、define的多行定义 de...

C语言#define输出问题
在编译时,将FORMAT用"%s! C is cool!\\n"替换,变成:printf ("%s! C is cool!\\n","%s! C is cool!\\n");执行时,由于第一个格式控制字符%s的存在,第一个%s会被后面的字符串“%s! C is cool!\\n”替代。实际打印输出的字符串应为:“%s! C is cool!\\n! C is cool!\\n”...

c语言中define用法
在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。 在C或C++语...

c语言 define 怎么用的
在C或C++语言中,“宏”分为有参数和无参数两种。无参数宏定义 无参数宏就是不带参数,其定义的一般形式为: #define 标识符 字符串 “标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。 例如: #define PI 3.14 它的作用是指定标识符PI来代替常数3.14。在编写源程序时,所有用到3.14的地方都...

求C语言define的用法有那些?
define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。(1) 简单的宏定义:define <宏名><字符串> 例: #define PI 3.1415926 (2) 带参数...

define在c语言中是什么意思define在c语言中表示什么
define在c语言中是一个宏定义的关键字,有定义、解释的意思。在C语言中的用法是“#define 变量名 值”,这句代码是使用在程序开头的,这样整个程序中对应的变量名就会在预编译的时候用后面的值替换。define在c语言中的作用就是方便程序段的定义和修改,可以将一个变量强制定义为你想要的值。在程序执行...

c语言define用法举例
c语言define用法举例 在C语言中,`#define`是一个预处理指令,用于创建宏(macros)。宏是一种用于简化代码的工具,通常用于在编译时替换为一段代码或表达式。 以下是一些`#define`用法和例子的说明:1. **常量定义**:这是最常见的使用场景。你可以使用`#define`来定义一个常量,比如:```c #...

相似回答