c语言中为什么用宏定义一个字符常量(一个字母)可以赋值给字符变量,

但是定义这个字符常量为一个汉字后,赋值给字符变量,打印时结果为一个问号,另外如何用宏定义一个字符串常量并赋值给一个字符数组(有时候,要输入别人的名字,这时用字符串常量代替... 但是定义这个字符常量为一个汉字后,赋值给字符变量,打印时结果为一个问号,另外如何用宏定义一个字符串常量并赋值给一个字符数组(有时候,要输入别人的名字,这时用字符串常量代替)?呜呜、、、、我初学C语言,不懂啊,那位大爷大姐帮帮我 help help !要是能列个实例就好了! 展开
 我来答
tattackor
推荐于2018-07-25 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:899万
展开全部
1、因为宏定义实质是一种替换,虽然看起来是字符,实际上最终是被替换成其他常熟或者值。
2、宏定义中的标识符都采用大写,这是编程中一种约定俗成的习惯:
1)宏替换不做语法检查,所以在使用的时候要格外小心
2)宏替换通常在文件开头部分,写在函数的花括号外边,作用域为其后的程序,直到用 问好
3)# u n d e f 命令终止宏定义的作用域
4)不要在字符串中使用宏,如果宏名出现在字符串中,那么将按字符串进行处理.
mafangsan
推荐于2017-09-27 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2620万
展开全部

  因为宏是一个简单替换,所以c语言中用宏定义一个字符常量(一个字母)可以赋值给字符变量。实质是在编译之前会把宏替换掉,然后再编译。

 

  例如:

#define  A    5
void main()
{
    int num=A;
}

  在编译之前A已经被替换成5了,所以就可以赋值给num。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gbk128
推荐于2017-10-10 · 超过12用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:31.8万
展开全部
汉字根据编码方式不同,所占的大小2~4个字节不等,汉字赋值给字符变量,只显示第一个字节,出问号就不奇怪了

用汉字赋值给字符数数组然后在显示的话,一定要考虑编码方式问题,你的终端支持哪种就选择哪种,否则乱码
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liucaitc
2012-07-20
知道答主
回答量:7
采纳率:0%
帮助的人:3.5万
展开全部
C里面不支持汉子,你用VC++6.0试试,那个可以显示汉子
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-18
展开全部
#define namehello "wendy"
#include<iostream.h>
#include<string.h>
void main()
{
cout<<namehello<<endl;
cout<<sizeof(namehello)<<endl;
char *str=new char[sizeof*(namehello)+1];
strcpy(str,namehello);
cout<<str<<endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式