求大神求精英解答16道题。 为啥是C?

求C语言大神解答这_百度知道问题补充&&
本页链接:
这是一个逗号表达式,逗号表达式的计算从左往右进行,即先计算b= (a=3*5,a*4)这个赋值表达式的右边又是一个逗号表达式,故先计算右边的逗号表达式a=3*5,a*4。还是先计算左边的a = 3*5,即将15赋值给a,这是a的值为15,在计算a*4这时a长穿拜费之渡瓣杀抱辑的值为15故a*4为60,后将逗号表达式的值赋给b,而逗号表达式的值为其中最后一个表达式的值,即a*4的值,故将60赋给b。这之后再计算a+5,但这句话并不改变a,b的值故最后 a = 15, b = 60
b=(a=3*5,a*4),a+5分析:这是一个逗号表达式,考查的有关逗号表达式的运算逗号表达式运算的顺序是,从左往右,但其结果以最后一个逗号后面的表达式结果为准首先计算第一个表达式b=(a=3*5,a*4),其中,又包括了一个逗号表达式(a=3*5,a*4),先计算它,计算后,a的值为15,该表达式的值为a长穿拜费之渡瓣杀抱辑*4的结果,即60。
然后把60赋给b再计算a+5,其结果为15+5,即20,也就是整个表达式的结果。综上所述,计算完毕后,a=15,b=60,表达式的值是20
弄清楚运算顺序就可以了逗号表达式返回的结果是最后一个表达式的值。另外赋值运算的优先级,高于逗号表达式先看括号内的a = 3*5, a * 4a = 15, a *4; 之后a为15, 返回60.b = 60, a+5 之后b为60, 这个逗号表达式返回a+5,也就是20.
flytomylife&
计算顺序是:a=3*5,结果a=15;b=(a=3*5,a*4),即b=(15,60),结果b=60,因为逗号表达式的值为最右边的表达式的值;b=(a=3*5,a*4),a+5,这是一个逗号表达式,逗号运算符比赋值运算符级别低,所以整个表达式的值是a+5,即20
longer9568&
这是一个逗号表达式,逗号表达式的计算从左往右进行,逗号表达式返回的结果是最后一个表达式的值。。另外赋值运算的优先级,高于逗号表达式,
“,”是c语言提供的一种特殊运算符,称为逗号运算符,逗号运算符的结合性为从左到右。在所有的运算符中,逗号运算符的优先级最低。其结果以最后一个逗号后面的表达式结果为准。
这个题目中首先是b=(),a+5;
根据从左到右的结合性先算b=()
()里面是(a=3*5,a*4)根据从左到右的结合算a=3*5 a是15
括号里的结果是(15,60) 最后把括号的内容给b
柠檬草060634&
猜你感兴趣一直困扰我的一个问题,求大神解答_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:475,238贴子:
一直困扰我的一个问题,求大神解答收藏
最近在看源码时经常只能看,不能运行,原因就是几乎所有的源码都是用tc写的,而我的电脑是用vs,根本不包含graphic.h
个人也认为图像对我来说挺重要,求大神解答,怎样在vs中引用出图像来代替graphic头文件。谢谢!
c语言海同强大的师资阵容,因人制定课程内容,分阶段学习.c语言就到正规IT技术培训机构-海同科技,培训IT技术面对面教学,免费重读!
Windows的话用EGE就好了
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或求大神解答,要有详细过程,为啥,谢了哈_百度知道求C语言大神解释,下面这四张图到底是为啥?-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
求C语言大神解释,下面这四张图到底是为啥?
来源:互联网 发表时间: 12:46:27 责任编辑:鲁晓倩字体:
为了帮助网友解决“求C语言大神解释,下面这四张图到底是为啥?”相关的问题,中国学网通过互联网对“求C语言大神解释,下面这四张图到底是为啥?”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:求C语言大神解释,下面这四张图到底是为啥?,具体解决方案如下:解决方案1:
这个不算奇怪。printf由于输出列表可变,因此函数没有原型,不做强制转换;如果类型不匹配,比如int作浮点输出,行为可以是不定的,由各个编译器自行处理。① i = 50, 这个整数,在电脑里面存储格式是16进制的0x32。 printf的时候,如果没有强制转换((float)i),而是按照float来理解i,那么0x32,按浮点数换算,就是十进制的0 (这个是在一般的汇编教材中的浮点章节都有说明,网上的教程也很多); 而如果类型转换了,浮点数50.0的16进制应该是0x。 ② 这个有点问题。 如果你显示的是完整的,那么应该是和你的编译器有关。 看你的截图,应该是64位Windows下的Dev-C++环订川斥沸俪度筹砂船棘境。 但不知道你的编译器是MinGW 32位还是TDM-GCC x64? 如果是,应该检查编译器本版是多少? 尽量下载新的,稳定版本。 你是在Dev-CPP的集成环境中直接F10运行结果的吧? 建议没有修改代码后,先F12重建一下,然后再运行。这个在我的测试环境里面,显示的是50 0.③ 这个问题同前。 printf因为可以接受动态格式数组,所以特意设计成运行时刻才决定行为的。也许是某版本的编译器的问题,导致了数据对齐或边界溢出问题。 如果可能,可否说明编译环境,或干脆附上你的全部工程文件?④ 这个好理解。 &i是变量i的内存地址, 因此最后打印的不是i的值,而是i的地址所对应的16进制地址,然后被按照%d的十进制表示出来了。关于图2,3里面的最后一位i,对照图4里面的&i, 怎么感觉你前面都是按照&i输出的???
解决方案2:
被打击了,第一个我知道是因为类型不对应,printf(%f,(float)i);就正常了
1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答
相关文章:
<a href="/cse/search?q=<inputclass="s-btn"type="submit"text="<inputclass="s-btn"type="submit"text="<buttonhidefocusclass="s-btnjs-ask-btn"text="我要提问
<a href="/cse/search?q=}

我要回帖

更多关于 求精英解答16道题 的文章

更多推荐

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

点击添加站长微信