本人C++初学者,编译时老提示:错误 1 error C2440: “初始化”: 无法从“const char [3]”转换为“char

我建的是CLR->WIN窗体控件程序,做的是一个练习,单击按钮触发事件,在事件里面调用一个函数,wchar_tgetWeekName(wchar_tf);private:... 我建的是CLR->WIN窗体控件程序,做的是一个练习,单击按钮触发事件,在事件里面调用一个函数,
wchar_t getWeekName(wchar_t f);
private: System::Void transChar(System::Object^ sender, System::EventArgs^ e) {
//char* b = getWeekName(&L"dfdc");
char a = "00";
//this->num->Text = getWeekName(a);
}
};
原来是调用函数的,后来发现老提示这个转换错误,后来直接在该函数里面定义一个字符型的变量a,也还是编译不过,不知道是什么问题,这个函数是在头文件Form1.h里面的,按别人说的修改属性变成多字符集无效,写成 char a = _T("00");也无效,难道在这个函数里面不能定义字符型?为什么会有这个错误,是什么原因呢?
展开
 我来答
百度网友6fe74e2
2013-05-30 · TA获得超过6592个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:259万
展开全部
错误说的很明确了,你用一个长度为3,数据类型为char的数组,给一个char变量赋值,当然是错的

char a="00";
改成
char a[3]="00";
或者
char *a="00";
但考虑到你的
wchar_t getWeekName(wchar_t f);
参数是wchar_t,

typedef unsigned short wchar_t;
所以最好就是这样:
char a='0';//就一个字符0
更多追问追答
追问
可是我的那getWeekName(wchar_t f);想接受的是字符串数据,能是一个字符,我把wchar_t a[]="00";编译也没有错误了,但是函数还是会现在错误,我要怎么让我的wchar_t getWeekName(wchar_t f);接受字符串。原来我写的是char a="00";改成单引号后就没问题了,这里单双引号对程序是有什么区别的吗?
追答
那你就要改
wchar_t getWeekName(wchar_t f);
这个函数的实现了

wchar_t不是字符串他是unsigned short类型。
改成:
wchar_t getWeekName(char* f);
然后
char *a="00";
这样你就可以这样调用了:
getWeekName(a);
但是你整个getWeekName函数都要重写。

char a='0';//a是一个字符变量,赋值一个字符0
char a[3]="00" ;// a是一个字符数组,每个元素都是一个字符变量,
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式