一道C的题,题是这样的:

一道好像是比较简单的题,但是结果想不通啊,求指点!!!【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:566,502贴子:
一道好像是比较简单的题,但是结果想不通啊,求指点!!!收藏
#include "stdio.h"int main(){
printf("\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);
getch();}为什么运行结果是i:dec=-4,oct=177774,hex=fffc.unsigned=65532
时光IT学院,免费在线直播教学,大牛现场答疑;拒绝纯理论学习,以c/c++/java项目实战为核心.针对c/c++/java零基础学员,快速入门,高薪就业.
不止这一道题是这样,类似的题八进制和十六进制也会发生这种变化,这方面不懂,请求指教啊
额………数制转换
oct=177774
数制转换怎么会转成这样呢,这里的17777是哪来的?怎么转的?
像钟表一样,走过一圈之后,看的是多出的部分。负数就用一圈剪去相应的就Ok
不信你把除了十进制的外的数都+4看看,应该是不溢出的最大数值+1
哦,还能这样算啊,一时没想过来,谢啦
登录百度帐号推荐应用扫二维码下载作业帮
3亿+用户的选择
下载作业帮安装包
扫二维码下载作业帮
3亿+用户的选择
一道思维题,但是我觉得其中B和E的价值应该是一样的,不知道为什么答案是E小于B,求解?有A、B、C、D、E5 种币值,其价值大小不同.目前已知:A是B的两倍价值;B是C的四倍价值;C是D的一半价值;D是E的一半价值.请问:这5种币值的价值顺序由小到大是怎么排列的?
作业帮用户
扫二维码下载作业帮
3亿+用户的选择
因为答案错咯撒 本人有一答案仅供参考 C
为您推荐:
其他类似问题
扫描下载二维码&&& 今日有同学笔试遇到一道 C 语言题目,原题目如下:
#include &stdio.h&
static union {
char a[2];
int main()
a[0] = 10;
printf("%d", i);
问输出为多少?
&&&&& 要解答这个题目需要以下之小知识点:
&&&& 1. union 类型的特点是不同类型的数据共享同一段内存,union 结构体的大小为其所含占内存最大之成员之大小,但在同一时刻只能有一类成员存储于其中,即这里 i 不能和 数组 a 同时有效(即会互相干扰);
&&&& 2. 计算机内存编址一般采用从小到大的顺序;
&&&& 3. 数组在内存中占据一块连续的顺序即 a[1] 内存编址要大于 a[0] 之内存编址;
&&&& 4. 数据的地址是以其在计算机中占据的地址低地址部分为地址的;
&&&&& 若以以上斯点论之,输出应为 266 ;
&&&&& 但是,计算机中有大端和小端的存储问题(与CPU也有关系),大端小端的说法来源于一个具有讽刺意味的小说,说的是有两个党派争论从哪一头敲破鸡蛋更好,一党坚持从小端敲破鸡蛋更好,即 Little Endian,而另一党则认为从大的一端敲破鸡蛋更好,即 Big Endian。因为数据存储时总是从低地址到高地址存储,计算机中所谓的大端存储是指占据超过一个字节的数据其高字节有效位存储于低内存地址编码中,即先开始存储高字节有效位,小端则正好相反。如 存储 0x1234 时,比方地址为 0x4000,占据的地址为 0x4000 和 0x4001,大端即有:0x4000 中存放 0x12, 0x4001 中存放 0x34,同理可想想小端的情况。计算机本身采用大端存储还是小端存储可能并没有对一般编程人员有太大意义,但对于嵌入式编程人员和汇编语言编程人员来说可能会使用到,所以即使不使用也应该记住的的确确是存在这样的实现选择。DEC (Digital Equipment Corporation,现在是Compaq公司的一部分)和Intel的机器(X86平台)一般采用小端。IBM, Motorola(Power PC), Sun的机器一般采用大端。 所以,基于上面的分析,还有一点需要明了:
&&&& 5. 明确本机是大端存储还是小端存储,对于不同的存储方式,还会有另外一个答案;
所以,上面这道题目的答案应该是不确定的,答案取决于具体的计算机存储细节。
你的计算机是大端的还是小端的?试试以下的程序便知。
#include &stdio.h&
static union {
if ( j == 1 )
printf("%s", "llittle endian");
printf("%s", "big endian");
阅读(...) 评论() &一道C语言执行题!
main(){int m=10 Int s[10]={0,1,2,3,4} For(i=0 i&10 i++) M=m+a[i] Printf(“m=%d\n”,m)请问运行结果.怎样计算的?谢谢
10-03-29 &
楼主,你的a[i]是什么啊?突然冒出来的。。没法计算啊。。而且,你的整个程序很多错误的。。如果把程序修改正确了之后,输出的结果应该是:11  12  13  14  就是把s数组里的数都加上10之后的结果。。
请登录后再发表评论!
有几个问题i未定义后面M与小写M应该是同一个所以前面应该为小写M(C区分大小写的)m=m+a[i]此处的a[i]前面未写义以我的看法应该为s[i]所以公式为m=m+s[i]S[10]={0,1,2,3,4,0,0,0,0,0}结果应该为20s[0]应该不存在用0来算
请登录后再发表评论!}

我要回帖

更多关于 C型题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信