CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

一个很小的程序,对程序输出结果有点不太理解.求高手指教

楼主zhangsongqi_0504(奥法)2006-01-02 15:49:56 在 C/C++ / C语言 提问

#include<stdio.h>  
  #define   PAGES   336  
  #define   WORDS   65618  
  int   main(void)  
  {  
    short   num=PAGES;  
    short   mnum=-PAGES;  
   
    printf("num   as   short   and   unsigned   short:%hd   %hu\n",num,num);  
    printf("-num   as   short   and   unsigned   short:%hd   %hu\n",mnum,mnum);  
    printf("num   as   int   and   char:%d   %c\n",num,num);  
    printf("WORDS   as   int,short,and   char:%d   %hd   %c\n",  
    WORDS,WORDS,WORDS);  
  前面的三个输出语句结果我都知道是什么原因,最后一个输出结果为82 1  R  
  这是为什么?是怎么得到的?WORDS的长度为65618,计算机的最大无符号整形长度为65535,最大有符号长度为32767,那么这个82是怎么计算出来的?还有后面的1 R,这是<<C   primer   plus>>上的例子,但是讲的不够透彻.谢谢各位了!  
   
   
   
  /*   printf("size   of   int:%d\n",sizeof(int)); 测试结果=2  */  
    printf("size   of   short   int:%d\n",sizeof(short   int));测试结果=2  */  
     
  getch();  
    return   0;  
  } 问题点数:0、回复次数:1Top

1 楼zhangsongqi_0504(奥法)回复于 2006-01-02 16:31:54 得分 0

哎呀,终于知道是怎么回事了!以下是我的调试结果,并根据调试结果得出的原因.请各位指正.  
   
  最后一个输出为82   1   R   ,原因是%d是输出有符号的整形,范围(-32768到32767);%hd是输出无符号的整形,范围是(0到32767)可以用32768代替WORDS的65618   做一个测试,因为32768已经超过-32768到32767的最大值,所以再从最小值循环,即为输出-32768.又因为32768已经超过0到32767的最大值,所以也要从头再开始循环,即为输出0.最后一个对应ASCII码.Top

相关问题

  • 求程序输出结果
  • 这个程序输出什么结果?
  • 这个程序的输出结果?
  • 一下程序输出结果是?
  • 帮忙看看程序的输出结果是???
  • 请问此程序的输出结果是什么
  • 请问下列程序的输出结果是什么?
  • 程序中如何设置结果输出的精度?
  • 如何能横向输出程序的运行结果?
  • 一个简单的程序输出结果不对

关键词

  • 测试
  • 输出
  • mnum
  • 结果
  • 整形
  • short
  • hd
  • 长度
  • num
  • words

得分解答快速导航

  • 帖主:zhangsongqi_0504

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo