问一段简单的C++代码

dingar 2007-04-14 12:26:43
#include <iostream>
using namespace std;

int main(){
cout << "b" << endl;
cout << L"b" << endl;
cout << L'b' << endl;
return 0;
}

用G++编译

b
0x8048880
98

请解释,谢谢
...全文
450 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dingar 2007-04-15
  • 打赏
  • 举报
回复
那L是什么意思,运算符??
dingar 2007-04-15
  • 打赏
  • 举报
回复
非常感谢,明白了
lzp729 2007-04-15
  • 打赏
  • 举报
回复
忘记给出解释了...
要注意一点,实际上在编译器编译的时候,由双引号包含起来的字串是被简单的看作是一个指针而已,只是这个指针指向的一段内存区域是以\000为结束条件的,那么如果程序中指定的类型与流对象的operator重载版本相适应时,就会想内存这个指针所指向的内存通过ASCII翻译成相应字符。如:
cout << "abc"; \\ abc 默认为单字节串,且与cout对象的输出函数相匹配,于是得到输出结果为abc
cout << L"abc"; \\ abc默认为双字节串,于是cout函数认为L"abc"仅仅是一个地址而已,于是会输出这个变量的地址
wcout << "abc" \\ abc默认为单字节串,但是wcout可认为是一个向下兼容cout的,于是也可以得到正确数输出,即"abc"

对于单引号,实际上,可以认为单引号''为取ASCII运算符,他的作用就是或者这个字符的ASCII的十进制值,这就是为什么会有'b'+2 == 100的原因
cout << 'b'; \\ b默认为单字节字符,且与......................,于是得到.......b
cout << L'b'; \\ b默认为.........,于是............................整数...,于是.............,即98;
wcout << L'b'; \\ .............................................................

省略号的位置你能回答上 你就学懂拉 :)
lzp729 2007-04-15
  • 打赏
  • 举报
回复
注意cout对象不包含对于宽字符的operator<<的重载,这样做的后果是不确定的,具体要看编译器对IO的实现。
应该使用cout的宽字符版本wcout
dannyliuy 2007-04-14
  • 打赏
  • 举报
回复
"e"表示字符串 'e'表示ASCII码
myullian 2007-04-14
  • 打赏
  • 举报
回复
第2个是字符串的地址
第3个是ASCI码值
dingar 2007-04-14
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int main(){
cout << "b" << endl;
cout << L"b" << endl;
cout << L'b' << endl;
cout <<&"b" << endl;
cout <<(int)'b' << endl;
return 0;
}


输出结果

b
0x80488c0
98
0x80488bc
98

plo说的是后验,我也看得出来。呵呵……问题这个在手册里有没有。授人以鱼,不如授人以渔。我想要渔
plo2168424 2007-04-14
  • 打赏
  • 举报
回复
第3个是ASCI码中的位子
plo2168424 2007-04-14
  • 打赏
  • 举报
回复
第2个是地址哈~
fandouC 2007-04-14
  • 打赏
  • 举报
回复
我以前没遇到过这样的问题
但我觉得第一个是输出一个字符串的形式; 第三个应该是将b字符用长整形数输出;猜想第二个就是将字符串用长整形输出 .
我也不清楚,不知道对不哦..
hellox 2007-04-14
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int main(){
cout << "b" << endl;
cout <<&"b" << endl;
cout <<(int)'b' << endl;
return 0;
}

33,319

社区成员

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

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