令人头痛的代码

今天看到了一段令人头痛的代码,因为你完全不知道它的编译结果是什么。程序如下:

int  main()

{

int  i = 1,a;

a=(++i )+ (i++ )+(i++);

printf("%d\n",a);

return 0;

}

大致一看,这段代码没有错误,但大家知道编译结果是什么吗。有人会说8吗,有人会说’10吗,哈哈其实都不对,我也不知道是什么。因为它在不同的编译器上有不同的结果。

这种代码存在一个计算的顺序问题,计算a的路径有很多,而不同的编译器会根据自己本身的语言习惯来选择不同的路径计算它的值,这就造成了代码的混乱问题,没有人能正确或者错误的评价这个代码。

在以后的学习中,尽量不要写出这种意义不明确的代码,会给别人和计算机造成不必要的麻烦。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值