向高手问下cout格式输出字串!

alweeq86 2011-09-18 10:06:28
今天看一个帖子把 10进制数 转换为 K(包括2、8、16)
里面有一个回复

while(n)
{
cout << ("0123456789ABCDE"[n % radix]);//或cout << (n % radix)["0123456789ABCDE"]

n = n / radix;
}

虽然反了,但是对cout这种选择对应的字符输出还是第一次看到,请高手帮忙解释下,或发点资料。
刚才在网上搜了下没有找到,谢谢了!
...全文
208 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
AndyZhang 2011-09-19
  • 打赏
  • 举报
回复
google 之
赵4老师 2011-09-19
  • 打赏
  • 举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
JoeBlackzqq 2011-09-19
  • 打赏
  • 举报
回复
那种格式能输出正确的答案吗?
modicum_lf 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 modicum_lf 的回复:]
引用 6 楼 pengzhixi 的回复:
我记得c和指针上面是有讲过这个写法的。


我也记得 !
[/Quote]

这样转换出来是反的 !
100 转换出来会是 4 6
还需要你自己再反置 !


modicum_lf 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 pengzhixi 的回复:]
我记得c和指针上面是有讲过这个写法的。
[/Quote]

我也记得 !

pengzhixi 2011-09-19
  • 打赏
  • 举报
回复
(n % radix)["0123456789ABCDE"]

至于这个对内置类型是OK,但是如果重载了operator[]是不能这么用的。
pengzhixi 2011-09-19
  • 打赏
  • 举报
回复
我记得c和指针上面是有讲过这个写法的。
Ol_lO 2011-09-19
  • 打赏
  • 举报
回复
该这么写

void fun(int n)
{
if(n == 0)
return;
fun(n / radix);
cout << ("0123456789ABCDEF"[n % radix]);
}


lz首先理解字符串常量和指针的关系,然后学习下指针和数组的关系
iamnobody 2011-09-19
  • 打赏
  • 举报
回复

while(n)
{
cout << ("0123456789ABCDE"[n % radix]);//或cout << (n % radix)["0123456789ABCDE"]

n = n / radix;
}







"0123456789ABCDE"[n % radix];

其实这个相当于 char* p = "0123456789ABCDE";
cout<<p[n%radix];
常量字符串只是代表它的地址。

(n % radix)["0123456789ABCDE"] 这个的意思也是一样的,但是这个格式比较变态,不建议使用。
alweeq86 2011-09-19
  • 打赏
  • 举报
回复
别沉了啊,谁知道帮个忙,谢谢了!
alweeq86 2011-09-19
  • 打赏
  • 举报
回复
谢谢大家 刚才看了下C和指针中的字符串常量269页 明白了
CabinLS 2011-09-18
  • 打赏
  • 举报
回复
第一次见这样的输出形式。。。
healer_kx 2011-09-18
  • 打赏
  • 举报
回复
那你搜索的能力还不行啊。

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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