搜索
查看: 4397|回复: 18
打印 上一主题 下一主题

不上机说出以下代码的运行结果

[复制链接]
楼主
发表于 2013-2-11 12:00:30 | 显示全部楼层
好吧是这样子的

根据c99标准
(a=2*8,a/4) 这样一个表达式,逗号左边先进行计算,然后把值舍弃掉,然后计算冒号右边的a/4,得到一个int型的4
(a=2*8,a/4)是一个表达式,printf处理的时候这个值输出到第一个%d,
而第二个%d没有对应值,根据c99标准,这是一个未定义行为,换而言之,编译器怎么处理都是正确的

a=2*8,a/4;
冒号右边的a/4不会影响a的值,所以a还是16

最后一个,a==b为假,转换为%d输出,就是0
沙发
发表于 2013-2-11 14:47:02 | 显示全部楼层
看样子是用了些未定义行为……
板凳
发表于 2013-2-11 14:53:12 | 显示全部楼层
月光疾风 发表于 2013-2-11 14:49
[mw_shl_code=c,true]/*如果去掉括号*/
#include
#include

conio.h是为了用getch
地板
发表于 2013-2-11 16:47:08 | 显示全部楼层
月光疾风 发表于 2013-2-11 16:30
因为少了个参数,语法没有错误,编译器就产生了一个垃圾值 ,是这样么

大概就是这意思吧

具体怎么处理的要看中间产生的汇编文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表