C++中"cout<<' '"与cout<<' '<<' '结果为什么不同
输出的是一个九九乘法表#include"iostream.h"#include"iomanip.h"intmain(){inti,j;for(i=1;i<=9;i++){...
输出的是一个九九乘法表
#include"iostream.h"
#include"iomanip.h"
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
cout<<j<<'*'<<i<<'='<<setw(2)<<i*j<<' '<<' ';/*如果此句换成cout<<i<<'*'<<j<<'='<<i*j<<' '则输出结果有问题,为什么呢?*/
}
cout<<endl;
}
return 0;
}
额~~~我就是因为刚才编译后运行出来结果每个乘法结果后面都多了个8224,不过我是vista的,有哪位高手再帮忙看看 展开
#include"iostream.h"
#include"iomanip.h"
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
cout<<j<<'*'<<i<<'='<<setw(2)<<i*j<<' '<<' ';/*如果此句换成cout<<i<<'*'<<j<<'='<<i*j<<' '则输出结果有问题,为什么呢?*/
}
cout<<endl;
}
return 0;
}
额~~~我就是因为刚才编译后运行出来结果每个乘法结果后面都多了个8224,不过我是vista的,有哪位高手再帮忙看看 展开
展开全部
问题在于最后一个' '
你应该写成" "
cout<<i<<'*'<<j<<'='<<i*j<<" ";
对于单引号''的返回值一般来说它和字符的asc值严格等价,但是这个值到底用char还是int保存和你是否正确使用单引号有关
对于里面是一个字符就返回char对于里面有很多字符就返回int
你可以通过重载函数测试
#include <stdlib.h>
void fun(int k){
printf("int\n");}
void fun(char k){
printf("char\n");}
int main()
{
fun(' ');//一个空格
fun(' '); //多个空格
system("pause");
return 0;
}
--------
<<对于的重载如果传入的是char类型就会输出字符
如果传入的是int类型就会输出数字
你在输出的最后使用了' '里面扩住了2个空格那么返回值就是int类型
所以输出的是很多8224
单引号返回int类型的时候
是连续的将字符的asc值从低字节到高字节置入int类型的内存区域,有的编译器会在单引号内输入超过4个字符时会报错因为int通常是4字节的,另一些不报错,但有warning.
也就是说单引号内扩住了两个空格字符
int类型的内存格式将是如下
高字节\0 \0 \x20 \x20低字节
转换成十进制就是8224.
详情请看http://blog.csdn.net/qiyuan2009/archive/2009/04/30/4140163.aspx
最注意的一点就是对于这种情况c和c++的处理方式不一样
你应该写成" "
cout<<i<<'*'<<j<<'='<<i*j<<" ";
对于单引号''的返回值一般来说它和字符的asc值严格等价,但是这个值到底用char还是int保存和你是否正确使用单引号有关
对于里面是一个字符就返回char对于里面有很多字符就返回int
你可以通过重载函数测试
#include <stdlib.h>
void fun(int k){
printf("int\n");}
void fun(char k){
printf("char\n");}
int main()
{
fun(' ');//一个空格
fun(' '); //多个空格
system("pause");
return 0;
}
--------
<<对于的重载如果传入的是char类型就会输出字符
如果传入的是int类型就会输出数字
你在输出的最后使用了' '里面扩住了2个空格那么返回值就是int类型
所以输出的是很多8224
单引号返回int类型的时候
是连续的将字符的asc值从低字节到高字节置入int类型的内存区域,有的编译器会在单引号内输入超过4个字符时会报错因为int通常是4字节的,另一些不报错,但有warning.
也就是说单引号内扩住了两个空格字符
int类型的内存格式将是如下
高字节\0 \0 \x20 \x20低字节
转换成十进制就是8224.
详情请看http://blog.csdn.net/qiyuan2009/archive/2009/04/30/4140163.aspx
最注意的一点就是对于这种情况c和c++的处理方式不一样
展开全部
格式问题而已。setw(2)设置了宽度,如果不设置,可能造成输出混淆
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题是没有的,只不过格式是看着不舒服一点的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
举个例子,a是一个数值(比如1)
cout<<"a"<<endl (显示a)
cout<<a<<endl (显示1)
cout<<"a"<<endl (显示a)
cout<<a<<endl (显示1)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询