为什么我的C++代码输出-1073741676而非变量的正常计算值?
问题原因分析
你的代码触发了整数除以零的未定义行为,是运行异常的核心原因,逐步计算可复现问题:
- 初始变量值:
vans=6、trains=5、flights=9、scooters=9、cycles=5 - 执行
vans -= flights后,vans值为-3,无异常 - 执行
trains /= cycles + cycles时,cycles+cycles=10,按照C++整数除法规则,5/10的结果是0,此时trains的值变为0 - 执行
flights /= scooters *= trains时,优先计算右侧scooters *= trains,等价于scooters = 9 * 0 = 0,随后执行flights /= 0,触发第一次除以零操作 - 后续执行
cycles /= trains时,trains已经是0,触发第二次除以零操作
C++标准没有定义除以零的操作行为,不同编译器、运行环境会出现不同的异常表现:比如程序直接崩溃、输出随机垃圾值、返回异常错误码,你遇到的-1073741676就是Windows环境下算术异常的典型错误返回值。
内容的提问来源于stack exchange,提问作者DanielM
相关产品推荐
相关产品推荐

