主题:今天随便说两句,关于日本 -- 绝对不是白领
共:💬141 🌺742 🌵6
一个是未定义行为undefined,一个是未指定行为unspecified,
C标准我也不熟,但是像
printf("%d %d", i++, i++);肯定会有两种结果,c语言并没有指定函数取参数一定从左边取或者一定从右边取。当然这不会报警或者报错,只是得到的结果在不同的系统和编译器上可能不一样而已。
作者 对本帖的 补充(1)
按照c99标准,副作用发生的顺序也是未指定的。英文还没看
未規定の動作の一覧
未規定の動作にはどのようなものがあるのでしょうか。C言語の標準規格であるJIS X 3010:2003(ISO/IEC 9899:1999)の「附属書J 可搬性」を参考に未規定の動作を列挙してみましょう。
部分式が評価される順序、及び副作用が発生する順序。ただし関数呼出しの()、&&, ||, ?:, カンマ演算子は除く。(6.5)
http://www.c-lang.org/detail/unspecified_behavior.html
- 相关回复 上下关系8
压缩 15 层
🙂显然不是 1 杨微粒 字274 2021-02-17 17:54:31
🙂惭愧,“i+++(++i)”竟然是UB吗? 4 钛坪樽逾 字630 2021-02-17 19:15:32
🙂也是C语言灵活性的体现 3 杨微粒 字321 2021-02-18 07:24:07
🙂看了下,好像有两个?
🙂使用副作用时不要依赖求值顺序 杨微粒 字1268 2021-02-18 07:14:48
🙂搜了下 1 杨微粒 字553 2021-02-18 02:11:10
🙂唉,这种题目既不是理也不是工,是八股 1 赵美成 字57 2020-12-15 03:35:54
🙂还有文字编码也是非常适合在中学讲授工程学的例子 杨微粒 字295 2020-12-15 03:33:09