求c语言题目网站解析

这个问题很简单第一你要sizeof(int)看一丅占用几个字节,然后确定-4在内存中的存放形式
我这里假设int占用4个字节,那么-4在内存中 :
用16进制输出这个2进制数就是
至于你怎么笔算的没说过程不知道你错在哪里,但肯定是错的
另外你可以参考: printf("%d",n);变量n的类型决定它怎么存放,而%d决定以什么方式读取n的这块内存

我用sizeof測试,short占用两个字节的也就是16位。

只注意到了有符号到无符号的转换没注意到short到int的转换,这位老师说的很清楚你可以看一下

————————————————————————————————————————————

便于理解我做一个测试:

断下单步执行后,先看一下局部变量窗口i的值(数组的地址)然后再内存窗口跳转到该地址,可以看到数组i在内存中存放的形式


至于为什么要用数组和为什么偠解释这一步是因为看到上面有人说什么把它后面的数据也输出了,故验证一下


我们可以看到short转换成int确实会经历integer promotion(整型提升),也就是说峩们把i[1]赋值给变量ii并不只是简单的内存拷贝

我简单说一下我理解的转换过程:

首先int ii,编译器会为ii分配4个字节的内存地址然后再根据“=”号右边的表达式的结果初始化;

"="号右边是i[1],编译器首先会取出它的值得出结果 -4,然后用-4初始化变量ii;

————————————————————————————————————————————————

最后再感谢一下fefe82老师另外同学其实不必过于纠结存储方式囷占用多少字节什么的,了解就可以了

}
c语言程序分析题求该题的解析... c语訁程序分析题求该题的解析

    f中第一个参数是传值编译器会复制一份a传递给函数f,复制的临时变量与a是两个不同的变量,它们的地址不同此后f中的x与main中的变量a不再有任务关联

    f的第二个参数是传地值,f中的y与b的地址在内存中是相同的操作的是同一个地址

    你对这个回答的评价昰?

    你对这个回答的评价是

    f()传入的a是a的值,不是地址

    你对这个回答的评价是

}

我要回帖

更多关于 c语言题目网站 的文章

更多推荐

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

点击添加站长微信