C语言未定义的行为

  1. 为什么会有c语言会有未定义的行为?
    个人理解:c语言中留下一部分内容没有规定,是为了给更大的自由度,即根据真正的需要来选用特定的平台编译,链接,执行。
    但是现代编译器也遵守c语言很多没有要求,程序不知道该如何运行,于是出现报错。
  2. 分类
  • 子表达式求值顺序未定义(除了含有逻辑与运算符及逻辑或运算符,条件运算符以及逗号运算符的子表达式)。例如,(b=a+2)-(a=1),编译器不知道a+2到底取用的是a的初始值还是被赋值后a的值1。
  • 后缀自增/减稍后的时间未定义。(但是可以放心地假设将在下一条语句执行前进行自增。例如,a=i*i++,第一个i到底是自增后的i还是原来的i呢。此类是否由于第一个的原因,笔者尚未明确,亟待解决。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值