新微赢技术网
标题:
高手进来问个问题
[打印本页]
作者:
天地之一
时间:
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