关于字符数字和整型数字的转换???

cismylife 2008-10-18 12:45:06

#include <iostream>
using namespace std;
main()
{
int a,b,c;
a='50'-48;
b='2'-48;
c=a/b//按理说应该是50/2,打印出来c是25,但是a的值不对,怎么回事?
cout<<c;
}
...全文
178 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zedzhao 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 cismylife 的帖子:]
C/C++ code
#include <iostream>
using namespace std;
main()
{
int a,b,c;
a='50'-48;
b='2'-48;
c=a/b//按理说应该是50/2,打印出来c是25,但是a的值不对,怎么回事?
cout<<c;
}
[/Quote]

测试帖 占个地方


aaa192139 2008-10-22
  • 打赏
  • 举报
回复
引用 3 楼 lzr4304061988012 的回复:
C/C++ code
#include <iostream>
using namespace std;
main()
{
int a,b,c;
a='50'-48;//50不是字符,'5'可以
b='2'-48;
c=a/b//按理说应该是50/2,打印出来c是25,但是a的值不对,怎么回事?
cout < <c;
}
50不是字符吧

'5'是字符,但是'50'不是字符,LZ的意思大概是想试验C++的功能?'2'的ASCLL码是32H=50,而'5'是35H=53,所以这样算出来正好C=5/2=2.
50肯定不行的,在任何字符集合里没有50这个字符,50是字符串,系统不能自动把字符串转化成数字,除非你自己主动用ATOI等函数。

lijianbin9 2008-10-22
  • 打赏
  • 举报
回复
路过,,,
Kenny_Glacier 2008-10-22
  • 打赏
  • 举报
回复
a='50'=0x3530=13616;
b='2'=0x32=50
a/b=272

如果要字符串转化成数字,可以使用a=atoi("50");

关于int a='xxxx'这种写法不很常见,其实就是用char来填充int
stormxs 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lzr4304061988012 的回复:]


C/C++ code
#include <iostream>
using namespace std;
main()
{
int a,b,c;
a='50'-48;//50不是字符,'5'可以
b='2'-48;
c=a/b//按理说应该是50/2,打印出来c是25,但是a的值不对,怎么回事?
cout<<c;
}
[/Quote]

50不是字符吧
我看你有戏 2008-10-22
  • 打赏
  • 举报
回复
''中只能是一个字符的
我看你有戏 2008-10-22
  • 打赏
  • 举报
回复
''中只能是一个字符的
iunion 2008-10-20
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
main()
{
int a,b,c;
a=atoi("50"); //字符串转数字
b='2'-'0'; //字符转数字
c=a/b//按理说应该是50/2,打印出来c是25,但是a的值不对,怎么回事?
cout<<c;
}
九桔猫 2008-10-19
  • 打赏
  • 举报
回复
2 3 楼的解释都是对的
leank 2008-10-19
  • 打赏
  • 举报
回复
其实LZ的意图是想把ASCII值为50+48的字符写进去吧,呵呵,结果直接写了个'50'。^_^
chuchuzinnia 2008-10-19
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>
int main(){
int a,b;
a=atoi("50");
b=atoi("2");
printf("%d\n%d\n",a,b);
printf("%d",a/b);
return 0;
}

运行结果:
50
2
25
lzr4304061988012 2008-10-18
  • 打赏
  • 举报
回复


#include <iostream>
using namespace std;
main()
{
int a,b,c;
a='50'-48;//50不是字符,'5'可以
b='2'-48;
c=a/b//按理说应该是50/2,打印出来c是25,但是a的值不对,怎么回事?
cout<<c;
}


sys0003 2008-10-18
  • 打赏
  • 举报
回复
1)、字符串和int对于编译器是不一样的。

2)就算按你的意思,结果也不是25啊

a= '50' - 48 = 2;
b='2' - 48 = -46
c=2/(-46)= ???

3)语法也问问题:'50'不能这么写,应该是"50"



#include <iostream>
using namespace std;
main()
{
int a,b,c;
a=atoi("50")-48;
b=atoi("2")-48;
c=a/b;// 2/(-46)整除所以是0
cout<<c;
}



tangtang02520 2008-10-18
  • 打赏
  • 举报
回复
a='50'-48;
这里面'50'是什么?跟编译器有关,最好别这样用
ForestDB 2008-10-18
  • 打赏
  • 举报
回复
猜测LZ的意思:
48 == 0x30 == '0'
所以'5' - '0' == 5
'2' - '0' == 2

但是'50'是个什么东西?如果编译代码有把警告打开,应该会得到warning吧.
yellowhwb 2008-10-18
  • 打赏
  • 举报
回复

用a=atoi("50")-48;吧
从字符串"50"转到数字50.
操作数
char op[4] = {'1','2','3'};
a=atoi(op)-48;

a为75
rollrock1987 2008-10-18
  • 打赏
  • 举报
回复
字符50 是什么东西???

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧