注册 登录
编程论坛 C++教室

高手进来问个问题

homexxhh 发布于 2007-02-01 15:48, 415 次点击
看下这个程序:

#include "iostream.h"
#include "string.h"
void main()
{
char b_num[20];
int nu;
cin>>b_num;
nu=b_num[strlen(b_num)-1]-48;
b_num[strlen(b_num)-1]='\0';

cout<<b_num<<endl;
cout<<nu<<endl;
}

有背景颜色的那两句是怎么执行的???
谢谢~~~
4 回复
#2
dlcdavid2007-02-02 18:35
nu=b_num[strlen(b_num)-1]-48;
//先求得strlen(b_num),即b_num的长度,再将其结果-1,作为下标访问b_num.即访问b_num的最后一位.
//然后将b_num最后一位的值-48.返回结果赋给nu.
b_num[strlen(b_num)-1]='\0';
//前面部分同上,最后把b_num最后一位的值赋为'\0'
#3
homexxhh2007-02-05 00:50

谢谢指点~~~~~原因在于char类型跟int类型的转换上!

#4
lc80232007-02-05 09:14
以下是引用dlcdavid在2007-2-2 18:35:07的发言:
nu=b_num[strlen(b_num)-1]-48;
//先求得strlen(b_num),即b_num的长度,再将其结果-1,作为下标访问b_num.即访问b_num的最后一位.
//然后将b_num最后一位的值-48.返回结果赋给nu.
b_num[strlen(b_num)-1]='\0';
//前面部分同上,最后把b_num最后一位的值赋为'\0'

nu=b_num[strlen(b_num)-1]-48;
这里把字符 b_num[strlen(b_num)-1] 转换为了 ASCII 码了,
你可以这样来验证一下:
char b_num[20];
int nu;
cin>>b_num;
nu = b_num[strlen(b_num)-1];
cout << ss <<endl;

每次输入如果是1结尾那就输出 49,如果是2结尾那就输出 50 一次类推。。。。。。。

不知道这样说你是否明白

#5
dlcdavid2007-02-09 13:43
楼上的ss是什么东西,,,

[此贴子已经被作者于2007-2-9 13:45:29编辑过]

1