char是单字节字符类型,因此占8个二进制位。
计算机中字符一般用整数表示,不同的整数表示不同的字符。
具体的表示方案称为(内码)编码方案。
例子如下:
c++ 代码:
char szParam[1024];
char szPwd[32];
char client_id[32];
char fund_account[32];
char user_token[64];
char branch_no[8];
char asset_prop[4];
char sysnode_id[4];
strcpy(szPwd, "22");
strcpy(fund_account, "11");
iFunc = 331100;
strcat(szParam, "password:");
strcat(szParam, szPwd);
printf(szParam);
解决方法如下:
char数组对应到C#中应该用byte数组,或者string 类型来实现。
因为c++中char是一个字节8位,c#中只有byte是一个字节8位与它对应。
char类型储存的是字符,占4个字节,可以用int型的整数表示,如心字的整数表示就是3。因为整数1,2,3代表的字符不对应'1','2','3',所以出现问题。
#include
#include
using namespace std;
int main(){
char cone = '1';
char ctwo = 2;
char cthree = '0';
cthree = cone + ctwo;
cout << cthree << endl;}
这样就没问题了。
char cone = 1;
char ctwo = 2;
char cthree = 0;
cthree = cone + ctwo;
这几句等于cthree=3;对吧,楼主查ASCII表可知,ASCII码3就是代表的是个心哈!!!
要想输出3,改为:
char cone ='1';
char ctwo = '2';
char cthree = '0';
cthree = cone + ctwo;
就可以啦!!!
程序中,字符的存取都是以其ASCII值进行的。
你可以查查ASCII表。看看对应的数字代表什么符号哦。
cout << cthree << endl;//怎么没有输出3,而输出的是个心字?
这句改一下
cout << cthree + 0x30 << endl;//怎么没有输出3,而输出的是个心字?
就可以输出3了.
或者
cout << (int)cthree << endl;//怎么没有输出3,而输出的是个心字?
也是3