求c语言解释大神解释下,详细的

求C语言大神解释下为什么会这么输出?_百度知道
求C语言大神解释下为什么会这么输出?
#include&stdio.h&
int main()
uw.word=0x1234;
printf(&word value:%04x\n&,uw.word);//1234,这里知道,后面的是咋回事
printf(&hig...
我有更好的答案
low=0x74;——为联合体变量uw中的成员结构体变量byte中的成员low赋值0x74.byte.low——访问联合体变量uw中的成员结构体变量byte中的成员low;uw.byte;uw.word——访问联合体变量uw中的短整型成员worduw.byte.high——访问联合体变量uw中的成员结构体变量byte中的成员high;uw.word+0x2a34;result=uw
采纳率:74%
为您推荐:
其他类似问题
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。14:34 提问
求大神解释C语言题,请解释详细一点,谢谢
下面的代码输出什么?
int main(void)
for (i = 0; i &= 5; ++i) {
a[i] = -i;
printf("a[%d] = %d\n", i, a[i]);
按赞数排序
#include&stdio.h&
void main()
int a[5]={0,0,0,0,0};
for (i = 0; i &= 5; i++) {
a[i] = -i;
printf("a[%d] = %d\n", i, a[i]);
printf("%p\n",&i);
printf("%p\n",&a[0]);
printf("%p\n",&a[1]);
printf("%p\n",&a[2]);
printf("%p\n",&a[3]);
printf("%p\n",&a[4]);
运行结果:
这是在线编译运行的结果。
数组越界 int a[5];
调试下就知道,数组的每一个元素等于它下标的负数。
int main(void)
for (i = 0; i &= 5; ++i) {
a[i] = -i;//当i=0时,a[0]=0;当i=1时,a[1]=-1;当i=2时,a[2]=-2;当i=3时,a[3]=-3;当i=4时,a[4]=-4;当i=5时,a[5]=-5;
printf("a[%d] = %d\n", i, a[i]);//打印a[0]=0;打印a[1]=-1;打印a[2]=-2;打印a[3]=-3;打印a[4]=-4;打印a[5]=-5;
上面每个分号代表一次循环打印一次,我把它写在一起了,告诉你在哪里执行的
如果回答对您有帮助,请采纳
int main(void)
//在栈上分配一个int型变量,变量名i
//在栈上分配一个int型数组,变量名a,大小5
for (i = 0; i &= 5; ++i) {
//将值-i 赋给 数组a的下标为i的元素
//比如i = 0时,a[0]就是0,i = 1是,a[1]就是-1
a[i] = -i;
//打印 第一个%d表示将i按整数输出,第二个%d表示将a[i]按整数输出
printf("a[%d] = %d\n", i, a[i]);
输出就是下标负数,但是主函数int,所以最好加一个return 0;
楼上都说的对,有数组越界问题 for (i = 0; i &= 5; ++i)
a[i] = -i。因为没有a[5],但还是能成功运行,结果就是
虽然a[5]导致数组越界,但是变量int i在数组int a[5]之前声明,即使数组越界也不会影响到i,这样a[5]仍能够正常输出。但新声明一个变量时,可能占用现在数组第六个值a[5]的内存地址,因此数组不要越界赋值。
典型的数组越界,数组下标从0开始,所以当i= 5时,a[5]所指向的内存地址,已经不再是数组的内存部分了。
是要在当前类中引用其他类时用到,包括库文件或自定义文件,这里不需要。
main函数没有返回结果。
int main(void)
for (i = 0; i & 5; ++i)
a[i] = -i;
printf("a[%d] = %d\n", i, a[i]);
return 0;
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐4被浏览86分享邀请回答1添加评论分享收藏感谢收起0添加评论分享收藏感谢收起写回答a+=a-=a=a*a是什么意思,求c语言大神解释一下_百度知道
a+=a-=a=a*a是什么意思,求c语言大神解释一下
我有更好的答案
实际上是赋值复合运算。a是初始赋值,但是也是变量从右往左做赋值运算a(被赋值)=a*a(初始值)a(再次被赋值)=a(初始值)-a(上一赋值)a(最后被赋值)=a(初始值)+a(上一赋值)
采纳率:13%
这仅仅是运算符的优先级问题,这题没有必须去讨论,当然,答案还是可以告诉你的,运算从右到左,答案为0。没有人会这样写代码的。
a=a*aa-=a a=a*a-a*aa+=a a=a*a-a*a+a*a-a*aa+=a-=a=a*aa=a*a-a*a+a*a-a*aa=0;
复合运算符吧,a+=a是a=a+a的简化;同理a-=a等于是a=a-a;原式运算顺序为a=a*a;a=a-a;a=a+a;结果为0?
从右至左,a=a*aa=a-a(此a是上一行结果)a=a+a(此a是上一行结果)
其他2条回答
为您推荐:
其他类似问题
您可能关注的内容
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 c语言大神 的文章

 

随机推荐