没有输出结果

green_wen 2010-06-03 10:38:56

#include "stdio.h"
#define s8 char
static int k = 0;
main()
{
s8 i = 0;
for(i=0;i<128;i++)
{
k += i&3;
}
printf("%d\n",k);
}
这代码有什么问题,为什么没有输出结果?
...全文
54 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
千杯不醉-sen 2010-06-03
  • 打赏
  • 举报
回复
想得简单了!溢出了......

#define s8 unsigned char
千杯不醉-sen 2010-06-03
  • 打赏
  • 举报
回复
应该是合适不对应。你这样写,他应该不会执行
printf("%d\n",k);
的。

#include "stdio.h"
#define s8 int
static int k = 0;

void main()
{
for(s8 i=0;i<128;i++)
{
k += i&3;
}
printf("%d\n",k);
}

电信用户 2010-06-03
  • 打赏
  • 举报
回复
范围-128~127 你的是死循环啊~!
ithiker 2010-06-03
  • 打赏
  • 举报
回复
这个题改为unsigned char后也比较有意思,输出为192:

#include <stdio.h>
#define s8 unsigned char
int k = 0;
int main()
{
s8 i = 0;
for(i=0;i<128;i++)
{
k += i&3;
}
printf("%d\n",k);
}

解释:
在0——127中,位表示为形如******11的数有32个,k增加为3*32=96
形如******01的32个,k增加1*32=32;
形如******10d的32个,k增加2*32=64;
故k=192
ithiker 2010-06-03
  • 打赏
  • 举报
回复
因为char型表示的范围是-128-127,当i=127时,i++=-128,永远满足i<128,for是一个死循环
zjl432 2010-06-03
  • 打赏
  • 举报
回复
char 的范围是【-128,127】
unsigned char 才行
pengzhixi 2010-06-03
  • 打赏
  • 举报
回复
for(i=0;i<128;i++)//i<127

69,380

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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