返回信息流#include <string>
#include <iostream>
int main(int argc, char **argv)
{
int a[] = { 0, 1, 2, 3, 4, 5, 6 };
int n, ii;
n = 7 ;
ii = 0;
while(ii < n)
{
//printf("%d ", a[ii]);
//为什么用cout不行?
std::cout << a[ii] + " ";
ii++;
}
std::cout << "END" << std::endl;
return 0;
}
输出是
END
如果换用printf那一句,输出是
0 1 2 3 4 5 6 END
为什么会这样呢?想不明白
这是一条镜像帖。来源:北邮人论坛 / cpp / #85922同步于 2015/3/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
怪哉cout,不输出
starrats
2015/3/12镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
如果我没理解错的话 你用a[ii]+" ",就变成了一个int整数+一个字符串,编译器执行隐式转换,把int整数转换成了char型,当做ASCII码处理了,然后再与字符串拼在一起。就是'a'+"bc" = "abc"这样。
而ASCII码的0~7也都是不可见字符,所以你就看不到了
如果是cout<<a[ii]<<" ",a[ii]就不会发生那个隐式转换
【 在 starrats 的大作中提到: 】
: #include <string>
: #include <iostream>
: int main(int argc, char **argv)
: ...................
8L正解
关于偏移这个还可以试试这段代码
int a[5];
a[4] = 10;
cout << 4[a] << endl;
【 在 starrats 的大作中提到: 】
: #include <string>
: #include <iostream>
: int main(int argc, char **argv)
: ...................