未定义的行为

  • 根据C标准, 类似c = (b = a+2) - (a = 1); 和j =i*i++; 这样的语句都会导致“未定义的行为”(undefined behavior),这跟“由实现定义”的行为是不同的。
  • 当程序中出现未定义的行为时,后果是不可预料的。不同的编译器给出的编译结果可能是不同的,但这还不是唯一可能发生的事情:首先程序可能无法通过编译,就算通过了编译也可能无法运行,就算可以运行也有可能崩溃、不稳定或者产生无意义的结果。
  • 换句话说,应该像躲避瘟疫一祥避免未定义的行为。

猜你喜欢

转载自blog.csdn.net/qq_42815188/article/details/85779328