std::cout和printf的问题

myj870517 2011-05-02 10:04:48

#include "stdafx.h"
#include <iostream>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
typedef struct loc {
unsigned char a : 4;
unsigned char b : 4;
} X;

X i;

for (i.a = 1; i.a <= 9; ++i.a)
for (i.b = 1; i.b <= 9; ++i.b)
if (i.a % 3 != i.b % 3)
printf("A = %d, B = %d\n", i.a, i.b);
//std::cout << "x = " << i.a << ",y = " << i.b << std::endl;

return 0;
}


没注释掉的输出正确,大概这样.
A = 1, B = 2
A = 1, B = 3
A = 1, B = 5
A = 1, B = 6
A = 1, B = 8
A = 1, B = 9
A = 2, B = 1
A = 2, B = 3
A = 2, B = 4
A = 2, B = 6
A = 2, B = 7
A = 2, B = 9
A = 3, B = 1
A = 3, B = 2

注释掉的是我自己随便试的,复制出来没效果(下面),我机器上显示是红桃黑桃什么的乱码,机箱还有"滴滴的声音"很囧,神马原因呢?
x = ,y =
x = ,y =
x = ,y =
x = ,y =
x = ,y =
x = ,y =
x = ,y =
x = ,y =
x = ,y =
x = ,y =
x = ,y =
x = ,y =
x = ,y =
...全文
130 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
myj870517 2011-05-02
  • 打赏
  • 举报
回复
哦原来是这样,我听见滴滴的声音鸡冻了,不好意思。。。
xmu_才盛 2011-05-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hnuqinhuan 的回复:]
没强制转换的时候就是输出char类型的
[/Quote]

你按照%d打印 声明域后的 字符串, 肯定会出问题。。
無_1024 2011-05-02
  • 打赏
  • 举报
回复
没强制转换的时候就是输出char类型的
無_1024 2011-05-02
  • 打赏
  • 举报
回复

#include <iostream>
#include <stdio.h>

int main()
{
typedef struct loc
{
unsigned char a : 4;
unsigned char b : 4;
} X;

X i;

for (i.a = 1; i.a <= 9; ++i.a)
for (i.b = 1; i.b <= 9; ++i.b)
if (i.a % 3 != i.b % 3)
//printf("A = %d, B = %d\n", i.a, i.b);
std::cout << "x = " << (int)i.a << ",y = " << (int)i.b << std::endl;

return 0;
}




33,311

社区成员

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

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