c - printf() 中的整数运算
问题描述
C 编程新手。为什么下面这段代码的输出不是0 20 0
,而是它1 20 0
?
printf ( "\n%d %d %d", x != 1, x = 20, x < 30 ) ;
我的理解是代码将 x 分配给 1 以外的值(1=true 因此!= true 为 0)?有人可以引导我理解逻辑吗?
解决方案
我不知道为什么某些教育系统会如此流行地选择更具创造性的方法来教授具有未指定行为的不良代码,但是由于未指定评估这些参数的顺序,因此您的程序的行为是未定义的。
也就是说,您可能假设代码是从左到右或从右到左“运行”的,但不需要这样的事情。事实上,任何事情都可能发生,包括任何输出或我家人的谋杀。所以请不要!
推荐阅读
- html - 将表头固定为带有三个点的两行
- javascript - 将尺寸线从多边形上移开
- mysql - 使用带有 SQL 的特定标签查找最活跃的用户
- c++ - static_cast 转换为错误的数据类型,但结果仍然正确?
- firebase - 通过电子邮件地址的一部分查找 firebase 用户?
- javascript - 在我使用 .html() 更新后,浏览器对新行数的响应速度较慢。你能帮我看看我的错误吗?
- python - 获取在脚本本身内部执行 python 脚本的命令
- angular - Ionic 从另一个组件打开 Popover
- javascript - 在 Node.js 应用程序中存储 Active Directory 凭据的位置
- bash - 如果名称:xxx 用 bash 替换 yaml 中的值