新微赢技术网

标题: 高手进来问个问题 [打印本页]

作者: 天地之一    时间: 2009-11-4 02:16
标题: 高手进来问个问题
看下这个程序:

#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;
}

有背景颜色的那两句是怎么执行的???
谢谢~~~
作者: 爱虎老油♂    时间: 2009-11-4 02:16
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'
作者: 海的无奈    时间: 2009-11-4 02:16
谢谢指点~~~~~原因在于char类型跟int类型的转换上!
作者: 訫譩    时间: 2009-11-4 02:16
以下是引用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 一次类推。。。。。。。

不知道这样说你是否明白
作者: ぃ☆ve銘    时间: 2009-11-4 02:16
楼上的ss是什么东西,,,




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2